API URI 설계 시 포인트
- 가장 중요한 것은 리소스 식별이다.
리소스란?
- 동작을 제외한 자원 그 자체를 리소라 한다.
- 행동은 제외가 되며 예를 들어 삭제, 추가, 수정 등 이러한 행위들은 제외다.
- 기본적으로 조회 URI를 보면 GET /members/{id} 로 구성한다
계층 구조상 상위 자원을 컬렉션으로 보기에 복수형으로 사용하는 게 좋다.
HTTP 메서드
- GET
- 서버에 전달되는 데이터는 query string 을 통해 전달된다.
- ex) hello=hi&hello=hi
- 메시지 바디는 사용이 가능하지만 지원되지 않는 곳이 많아 권장하지 않는다.
- 서버에 전달되는 데이터는 query string 을 통해 전달된다.
- POST
- 메시지 바디를 통해 서버로 요청 데이터를 전달하면 서버는 해당 데이터를 받아 처리한다.
- 주로 등록 혹은 프로세스 처리 등에 사용된다.
- 리소스 등록
- 서버가 아직 식별하지 않은 새로운 리소스를 생성한다.
- 요청 데이터 처리
- 단순한 데이터 생성 말고 프로세스를 처리하는 경우로 꼭 새로운 리소스가 생성되지 않을 수도 있다.
- ex) POST /order/{orderId}/start-delivery
- 리소스 단위가 아닌 행위가 포함된 URI 를 Control URI 라고 한다.
- 리소스 등록
- 다른 메서드로 해결하지 못하는 경우 POST를 사용하고는 한다.
- PUT
- 리소스 대체의 목적으로 리소스가 있는 경우 대치 값으로 변경하고 없는 경우 새롭게 생성한다.
- 특정 리소스를 식별하기에 POST 와는 차이점이 있다.
- PATCH
- 리소스 부분을 변경
- 대치가 아닌 필요 부분만 업데이트 하는 방식이다.
- DELETE
- 리소스를 제거할 때 사용한다.
- 리소스 식별자를 Delete 로 보낼 경우 해당 리소스를 삭제한다.
안전(Safe Methods)
- 호출을 해도 리소스는 변경되지 않는다.
- GET 과 같이 조회의 성격을 띄고 있기에 안전하다.
- 안전 범위는 리소스만 해당하며 외적인 요소는 고려하지 않는다.
- 호출 할 때 마다 로그가 남는다고 이는 리소스에 대한 영향은 아니기에 고려하지 않아도 된다.
멱등(Idenpotent Methods)
- 메서드를 반복해서 호출하더라도 결과가 동일 해야 한다.
- GET, PUT, DELETE 와 같은 메서드는 여러번 호출해도 결과가 동일하다.
- GET 은 조회를 하기에 리소스의 변경이 없고 결과가 동일하다.
- PUT 은 대치값으로 변경하기에 결과가 동일하다.
- DELETE 는 리소스를 삭제하기에 같은 요청을 여러번 하더라도 삭제 내용이 복구되지 않아 결과가 동일하다.
캐시가능(Cacheable Methods)
- 실제로 GET, HEAD 정도만 캐시가 가능하다.
- POST의 본문 내용까지 캐시 키로 고려해야 하는데 구현이 쉽지 않다.
참고 : https://catsbi.oopy.io/5218f90b-8d0d-4bd6-afa4-1b7736cf6f13
'HTTP' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 상태코드 (0) | 2022.11.16 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 활용 (0) | 2022.11.15 |
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본 (0) | 2022.10.24 |
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본 - 모든 것이 HTTP, 클라이언트 서버 구조 (0) | 2022.10.08 |
[모든 개발자를 위한 HTTP 웹 기본 지식]URI와 웹 브라우저 요청 흐름 - URI, 웹 브라우저의 요청 흐름 (0) | 2022.10.05 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - PORT, DNS (2) | 2022.10.04 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - TCP, UDP (0) | 2022.10.03 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - 인터넷 통신, IP(인터넷 프로토콜) (0) | 2022.10.03 |