HTTP 메서드
JeongSeulho
2024년 12월 20일
준비중...
클립보드로 복사
restful HTTP 설계
- 목표 자원을 URI로 식별하고 자원에 대한 처리 방법을 HTTP 메서드로 정의
- 자원은 복수, 단수 혼용하지 않기(복수 추천)
- 유저 목록 조회 :
/users
- 유저 조회 :
/users/{id}
(유저 목록 테이블에서 유저 1명을 조회하므로)
- 유저 목록 조회 :
- 일부 경우에는 URI에 동사를 사용하기도 함(컨트롤 URI)
HTTP 메서드
- GET : 리소스 조회
- 쿼리를 통해 추가 요청 정보 전달
- 바디 사용 가능하지만, 지원 안하는 브라우저 및 서버가 대부분
- POST : 요청 데이터 처리
- 바디에 데이터를 전달하고 이를 처리해 달라는 의미
- 회원가입, 생성, 프로세스 처리(결제 등)
POST 요청은 리소스에 따라 바디에 담긴 데이터를 어떻게 처리할지 다양함
- PUT : 리소스 전체 변경 또는 대체(덮어쓰기)
- URI의 리소스 위치에 대하여 덮어쓰기
- 리소스가 없으면 생성
- PATCH : 리소스 일부 변경
- DELETE : 리소스 삭제
HTTP 메서드 속성
- 안전 : 호출해도 리소스를 변경하지 않음
- 안전 메서드 : GET, HEAD
- 멱등 : 몇번을 호출하든 결과가 같음
- 멱등 메서드 : GET, PUT(대체된 결과는 동일), DELETE(삭제되었다는 결과는 동일)
- 외부 요인으로 중간에 리소스가 변경되는 것은 고려하지 않음(GET 요청을 2번했는데 그 사이에 리소스가 변경되어 다른 응답오는 것은 고려하지 않음)
- POST로 결제 요청을 중복하면 같은 결제가 여러번 발생
- 클라이언트에서 제대로 응답을 못받았을때, 멱등하다면 재요청을 해도 됨(서버에서 실제로 성공했든 실패했든 상관없이 결과는 동일)
- 캐시가능 : 응답 결과 캐시 가능한가
- 캐시 가능 메서드 : GET, HEAD, POST, PATCH
- 실제로 GET, HEAD에서만 캐시 사용