[CS] Restful API?
Restful API?
0 -1. API(Application Programming Interface)란?
- Application Programming Interface의 약자야.
- 데이터와 기능의 집합을 제공해서 컴퓨터 프로그램간의 상호작용을 촉진하고, 서로 정보를 교환 가능하도록 하는 것이야.
0 -2. REST(Representational State Transfer) 란?
- Application Programming Interface의 약자야.
- 데이터가 요청(request)되어지는 시점에서 자원의 상태(정보)를 전달해.
- JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이지.
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)를 명시하고,
HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 걸 의미해.
- 즉, 자원 기반의 구조 설계의 중심에 Resourse가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍처를 의미해.
-
1. Restful API 이란?
- 'REST API'와 'RESTful API'라는 용어는 같은 의미로 사용할 수 있어.
- 'RESTful API'는 두 컴퓨터 시스템이 인터넷을 통해 "정보"를 안전하게 교환하기 위해 사용하는 인터페이스야.
- REST 기반으로 서비스 API를 구현한 것이지. REST 아키텍처 스타일을 따르는 API라고 해.
RESTful에 대해 더 보기!
- RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어야.
=> 'REST API'를 제공하는 웹 서비스를 'RESTful'하다고 할 수 있어.
- RESTful은 REST를 REST답게 쓰기 위한 방법인데, 누군가 공식적으로 발표한 것은 아니야.
=> 즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭 돼.
2. GET,POST 그 외의 메소드, 그 기준
- 메서드 : 개발자가 종종 HTTP(Hypertext Transfer Protocol)을 사용해서 RESTful API를 구현해.
HTTP 메서드는 리소스에 수행해야 하는 작업을 서버에 알려줘.
아래는 4가지의 일반적인 HTTP 메서드야. (GET, POST, PUT, DELETE)
- GET
클라이언트에서 GET을 사용하여 서버의 지정된 URL에 있는 리소스에 액세스해.
GET 요청을 캐싱해서 RESTful API요청에 파라미터를 넣어서 전송하고 전송 전에 데이터를 필터링하도록
서버에 지시할 수 있어.
-> Read, 조회할 때 쓰여.
- POST
클라이언트에서 POST를 사용해여 서버에 데이터를 전송해.
여기에는 요청(request)과 함께 데이터 표현이 포함 돼. (json, formdata 등)
동일한 POST요청을 여러 번 전송하면 동일한 리소스를 여러 번 생성하는 부작용이 있어.
-> Create, 생성할 때 쓰여.
- PUT
클라이언트는 PUT을 사용해서 서버의 기존 리소스를 업데이트해.
POST와 달리, RESTful 웹 서비스에서 동일한 PUT 요청을 여러 번 전송해서 결과는 동일해.(같아.)
-> Update, 수정할 때 쓰여.
- DELETE
클라이언트는 DELETE 요청을 사용해서 리소스를 제거해.
DELETE 요청은 서버 상태를 변경할 수 있어.
하지만 사용자에게 적절한 인증이 없으면 요청은 실패해.
-> Delete, 삭제할 때 쓰여.
예시)
A라는 작성자는 A-1이란 게시글을 작성했고, B라는 작성자는 B-1이란 게시글을 작성했다면,
A는 A-1, B-1 게시글들 중 A-1라는 게시글만 지울 수 있어.
만약, A가 B-1라는 게시글을 삭제하려고 하면 B라는 인증을 못해서 삭제 요청이 실패해.
3. RESTful API 가 아닌 것들은 뭐가 있을까?
- CRUD(Create, Read, Update, Delete) 기능을 모두 POST로만 처리하는 API
- route에 resource, id 외의 정보가 들어가는 경우 ->(/students/updateName)
- 참고자료 -
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html