URI
는 리소스 식별이 가장 중요함URI
에 매핑
- 회원 목록 조회
- 회원 조회
- 회원 등록
- 회원 수정
- 회원 삭제
→ 모두 /memebers/{id}
(목록 조회의 경우에는 {id}
제외)
GET
: 리소스 조회POST
: 요청 데이터 처리PUT
: 리소스 대체, 해당 리소스가 없으면 생성PATCH
: 리소스 부분 변경DELETE
: 리소스 삭제+) 참고 메서드
HEAD
: GET
과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 변경OPTIONS
: 대상 리소스에 대한 통신 가능 옵션(메서드)를 설명(주로 CORS
에서 사용)CONNECT
: 대상 자원으로 식별되는 서버에 대한 터널을 설정TRACE
: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행query
(Query parameter, Query String)를 통해서 전달
- HTML 양식에 입력된 필드와 같은 데이터 블록을 데이터 처리 프로세스에 제공
- 게시판, 뉴스 그룹, 메일링 리스트, 블로그 또는 유사한 기사 그룹에 메시지 게시
- 서버가 아직 식별하지 않은 새 리소스 생성
- 기존 자원에 데이터 추가
→ 이 리소스 URI
에 POST
요청이 오면 요청 데이터를 어떻게 처리할지 리소스마다 따로 정해야 함 → 정해진 것이 없음
- 서버가 아직 식별하지 않은 새 리소스 생성
- 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우
- 주문에서
결제완료 → 배달시작 → 배달완료
처럼 단순히 값 변경을 넘어서 프로세스의 상태가 변경되는 경우POST
의 결과로 새로운 리소스가 생성되지 않을 수도 있음POST /orders/{orderId}/start-delivery
(컨트롤 URI)
JSON
으로 조회 데이터를 넘겨야 하는데,GET
메서드를 사용하기 어려운 경우- 이렇게 애매한 경우
POST
사용
POST
와 다르게 클라이언트가 리소스를 식별함URI
를 지정함PUT
과 달리 일부 필드의 값만 넘기면, 그 필드의 값만 변경됨PATCH
가 지원이 안되는 경우에는 POST
를 사용하면 됨f(f(x)) = f(x)
GET
: 몇 번을 조회해도 같은 결과가 조회됨PUT
: 결과를 대체, 따라서 같은 요청을 여러 번 해도 최종 결과는 같음DELETE
: 결과를 삭제, 같은 요청을 여러 번 해도 삭제된 결과는 같음POST
: 멱등이 아님, 두 번 호출하면 같은 결제가 중복해서 발생할 수 있음GET, HEAD, POST, PATCH
GET, HEAD
정도만 캐시로 사용함POST, PATCH
는 본문 내용까지 캐시 키로 고려하는 구현이 쉽지 않음강의 출처 : 인프런 : 모든 개발자를 위한 HTTP 웹 기본 지식