HTTP API를 어떻게 설계하는지 예시를 통해 알아보자.
HTTP API - 컬렉션 (POST 기반 등록)
회원 관리 API를 예로 든다. 여기서는 회원이 리소스이니까, 리소스 URI를 /members 로 정했다.
회원 목록, 등록, 조회, 수정, 삭제 기능이 있을 때, 신규 회원을 등록하는 상황을 보자.
회원 등록은 POST 메서드를 사용하며, 클라이언트는 새로 등록될 리소스의 URI를 모른다. 따라서 POST /members라고 서버에 보내면, 서버가 새로 등록된 리소스 URI를 생성해 알려준다. Location: /members/100
이렇게 서버가 관리하는 리소스 디렉토리를 컬렉션(Collection)이라고 한다. 컬렉션은 서버가 리소스의 URI를 생성하고 관리한다.
그럼 이 예시에서는 컬렉션이 무엇일까?
-> 바로 /members가 되는 것이다.
HTTP API - 스토어 (PUT 기반 등록)
파일 관리 API를 예로 든다. 여기서는 파일이 리소스이니까, 리소스 URI를 /files로 정했다.
파일 목록, 조회, 등록, 삭제, 대량 등록 기능이 있을 때, 파일 등록하는 상황을 보자.
파일 등록은 기존에 파일이 없다면 현재 파일을 등록할 것이고, 기존에 파일이 있다면 기존 파일을 삭제하고 등록할 것이다. 그것이 PUT 메서드의 기능? 역할? 이기 때문이다.
원하는 파일을 등록하기 위해서는 클라이언트가 해당 리소스 URI를 알고 있어야 한다. 즉, 클라이언트가 직접 리소스의 URI를 지정하는 것이다. PUT /files/star.jpg
이렇게 클라이언트가 관리하는 리소스 저장소를 스토어(Store)라고 한다. 스토어는 클라이언트가 리소스의 URI를 알고 관리한다.
그럼 이 예시에서는 스토어가 무엇일까?
-> 바로 /files가 되는 것이다.
HTML FORM 사용
순수 HTML의 경우에서, form 태그는 GET, POST 메서드만 지원하기 때문에 기존 URI 설계 방식으로는 한계가 있다.
이러한 한계를 해결하기 위해, 동사로 된 리소스 경로인 컨트롤 URI, 컨트롤러를 사용한다. 이는 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스를 실행한다.
ex) /members/{id}/delete
'웹 공부하기 > HTTP' 카테고리의 다른 글
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 상태코드 - 4xx, 5xx) (0) | 2021.09.27 |
---|---|
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 상태코드 - 2xx, 3xx) (0) | 2021.09.27 |
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메서드 활용) (0) | 2021.09.24 |
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메서드 속성) (0) | 2021.09.23 |
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메서드) (0) | 2021.09.23 |