REST API 정리
REST API
모든 http 서비스 호출을 GET, POST로 할 수 있지만, 수행하려는 작업이 명확하게 드러나지 않는다. 이를 해결하기 위해 REST API 규격을 이용할 수 있다. HTTP Method를 통해 CRUD의 동사(행위)를 나타낼 수 있고, URL을 통해, 통제하려고 하는 작업의 대상을 나타낼 수 있다.
정의
- Representational State Transfer의 약자
- 웹서비스 작성을 위해 사용되는 규약을 정의하는 software architectural style
- REST architectural style을 따라 개발한 웹서비스들을 RESTful 웹서비스라고 부른다.
유래
2000년도 Roy Fielding이 그의 박사 논문에서 정의
Architectural Constraint (아키텍처 제약 조건)
Client-server architecture
- 서버-클라이언트 모델로 구축
- 서버와 클라이언트 각각의 역할이 분리 되기 때문에, 각각의 역할이 명확하고 서로간의 의존성이 줄어든다.
Stateless
- 각 요청간의 클라이언트 컨텍스트가 서버에 저장되면 안된다.
- 클라이언트가 컨텍스트를 유지하고 관리한다. ex) 사용자 인증 정보(Token), 컨텍스트(세션, 로그인 정보)를 직접 관리
Cache가 사용 가능하다
- HTTP의 캐싱 기능을 사용 가능 ex) Last-Modified tag, E-Tag…
JSON
- 데이터 포멧으로 JSON을 사용한다.
- 호환성이 좋다.
기타
- 쉽게 구축, 확장 가능하다
- 웹에 최적화 되어있다.
RESTful API 구조
URI와 HTTP 프로토콜을 기반으로 한다.
- URI: 정보의 자원을 나타낸다.
- HTTP Method(GET, POST, PUT, DELETE): 자원에 대한 Verb(행위)를 나타낸다.
예시 1 - Collection, Document
예를 들어 users (collection)에 대한 REST API를 아래와 같이 예시를 들 수 있다.
1. GET Method, URI: /users/1
2. DELETE Method, URI: /users/2
3. PUT Method, URI: /users/3
4. GET Method, URI: /users
URI 에서 첫번째 /users의 경우 user의 집합을 나타내며 Collection이라고 부른다. 그리고 두번째 /1, /2, /3의 경우 Collection 내의 특정 자원을 나타내며 Document라고 불리며, ID와 같은 Identifier를 사용한다.
최종적으로 HTTP Method와 URI가 합쳐진 의미는 아래와 같다.
- 1의 경우 users의 id 1을 가지는 resource를 조회
- 2의 경우 users의 id 2를 가지는 resource를 삭제
- 3의 경우 users의 id 3을 가지는 resource를 수정
- 4의 경우 users collection 전체의 정보를 조회
예시 2 - Sub-Collection
예시 1의 경우에 더불어, 다중 계층을 표현 할 수 있다.
1. GET Method, URI: /schools/3/users/1
2. DELETE Method, URI: /schools/3/users/2
3. PUT Method, URI: /schools/3/users/3
4. GET Method, URI: /schools/3/users
위의 예시에서는, 예시 1의 URI 앞에 ‘/schools/3’이 추가 되었다. 해당 URI들은 ID 3을 가지는 school Document 하위에 존재하는 users의 자원들을 의미한다.
기타 개념
SOAP
- Simple Object Access Protocal의 약자
- HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜
- 웹서비스 내의 모든 데이터는 XML로 표현된다.
- 보통 원격 프로시져 호출(Remote Procedure Call:RPC)패턴을 사용
- 클라이언트에서 서버로 메세지를 요청하고, 서버는 메시지를 즉시 응답한다.
- XML을 기반으로 헤더와 바디를 조합하는 디자인 패턴으로 설계
- SOA(Service Oriented Architecture)를 실현하기 위한 기술
- REST 보다 복잡하다.
- 보안이 요구 되는 경우 선호
- 더 많은 리소스와 대역폭 필요
- 캐시 사용 불가
ROA(Resource Oriented Architecture)
- REST가 기반으로 하는 아키택쳐
Source
- https://en.wikipedia.org/wiki/Representational_state_transfer
- https://mygumi.tistory.com/55
- https://ssup2.github.io/theory_analysis/REST_API/
- https://meetup.toast.com/posts/92
- http://blog.wishket.com/soap-api-vs-rest-api-%EB%91%90-%EB%B0%A9%EC%8B%9D%EC%9D%98-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80/
- https://ko.wikipedia.org/wiki/SOAP
Leave a comment