HTTP 요청 메서드
REST API 리소스 모델에서 각 메소드는 고유한 의미를 가진다.
- GET - 리소스 상태의 표현
- HEAD - 메타데이터 조회
- PUT - 새 리소스 생성 또는 갱신
- DELETE - 자식 리소스 제거
- POST - 새 리소스 생성 또는 컨트롤러 실행
세부 규칙
터널링 금지
- 터널링이란 원래 의도와 맞지 않게 HTTP 를 사용하는 행위를 뜻한다.
GET
- 리소스의 상태 표현을 조회한다.
HEAD
- 응답 헤더(메타데이터)를 조회한다.
- 바디가 없다.
PUT
- 리소스 삽입, 갱신 을 위해 사용한다.
- 변경한 값을 갖는 메시지 바디를 포함할 수 있다.
POST
- 새로운 리소스 생성 시 사용한다.
- 새 메시지를 나타내는 메시지 바디를 포함할 수 있다.
- 컨트롤러 리소스를 실행할 수 있다.
DELETE
- 오직 특정 리소스를 삭제하는데 사용한다.
- (임시 삭제 등과 같은) 삭제 외 행위는 POST 로 갈음한다.
OPTION
- 서버에서 제공하는 method 목록을 전달한다.
응답
1xx 정보
전송 프로토콜 수준의 정보 교환.
2xx 성공
클라이언트의 요청을 성공적으로 수행 함.
- 200("OK") - 일반적인 성공, 바디에 에러 포함 불가.
- 201("Created") - 리소스 생성.
- 202("Accepted") - 비동기 처리 시작. 비동기 작업의 성공 여부를 나타내는것이 아님.
- 204("No Content") - 냉무.
3xx 재전송
클라이언트의 요청을 완료하기 위해 추가 행동이 필요.
- 301("Moved Permanently") - 리소스의 위치가 변경. 헤더의 Location 항목에 새로운 URI 기술 필요.
- 302("Found") - 사용 지양
- HTTP/1.0 에서는 Temporary Redirect.
- GET, HEAD 를 이용한 최초 요청에만 응답하게 정의하였으나, 많은 브라우저들이 GET 으로 method 를 바꿔 재전송 하도록 구현함.
- 303, 307로 세분화 되었으니 302는 사용 지양.
- 303("See Other") - 새로운 Location 에 GET 으로 접근하기를 권함.
- 304("Not Modified") - 이하동문. 클라이언트에 이미 최신의 응답을 가지고 있으니 바디를 전송하지 않음.
- 307("Temporary Redirect") - 일시적으로 이동한 위치로 기존 method 그대로 접근해야 하며, 향후 기존 URI 를 사용 할 예정임.
4xx 클라이언트 오류
- 401("Unauthorized") - 클라이언트의 인증에 문제가 있다.
- 403("Forbidden") - 인증에는 문제가 없으나, 권한이 없다.
- 404("Not Found")
- 405("Method Not Allowed") - 해당 메소드를 지원하지 않음. Allow 헤더 반환.
- 406("Not Acceptable") - 요청한 미디어 타입으로 결과를 제공할 수 없음.
- 415("Unsupported Media Type") - 요청한 미디어 타입의 입력을 처리할 수 없음.
- 409("Conflict") - 처리 불가 상태 ( ex: 삭제한 데이터를 수정하려고 할때 ).
- 412("Precondition Failed") - 전제조건 불만족.
5xx 서버 오류
500 Internal Server Error ... NO!
'개발' 카테고리의 다른 글
[요약] REST API 디자인 규칙 - 06. 클라이언트 영역 (0) | 2022.04.11 |
---|---|
[요약] REST API 디자인 규칙 - 05. 표현 디자인 (0) | 2022.04.10 |
[요약] REST API 디자인 규칙 - 04. 메타데이터 디자인 (0) | 2022.04.10 |
[요약] REST API 디자인 규칙 - 02. URI 식별자 설계 (0) | 2022.04.07 |
[요약] REST API 디자인 규칙 - 01. REST 소개 (0) | 2022.04.07 |