04.HTTP 메서드
HTTP API 만들기
- 리소스를 고려해서 만들어야 한다
- 리소스란??
- 회원가입, 회원조회, 회원수정 등등
- 가입 조회 수정이 리소스가 아니다!! 회원 자체가 리소스이다
- 즉, 리소스와 행위를 분리하여 URI를 만들어야 한다
HTTP 메서드 - GET, POST
- 많이 사용되는 메서드
- GET : 리소스 조회
- POST : 요청 데이터 처리, 주로 등록에 사용한다
- PUT : 리소스를 대체, 해당 리소스가 없으면 생성한다
- PATCH : 리소스 부분 변경
- DELETE : 리소스 삭제
- GET
- 리소스 조회
- query를 사용하여 서버에 데이터 전달
- GET으로 서버에 전달되면 일반적으로 서버는 캐싱을 한다.
- GET /search?query HTTPversion
- POST
- 요청 데이터 처리
- 메시지 바디를 통해 서버로 요청 데이터 전달
- 서버는 요청 데이터를 받아서 처리한다
- 1) 주로 신규 데이터 등록에 사용한다.
- 서버가 아직 식별하지 않은 새로운 리소스를 생성한다.
- 회원 가입, 물품 주문 등등
- 2) 요청 데이터를 처리하는데도 사용한다.
- 단순한 값 하나의 변경을 넘어서 프로세스의 상태가 변경되는 경우에 사용한다.
- 3) 다른 메서드로 처리하기 어려운 경우
- 조회 시 GET의 query로 데이터를 보내기가 어렵고, 메시지 바디를 이용해야 하는경우(보통 GET은 Body부분을 사용하지 않는다)
- POST /리소스 HTTPversion
TTP 메서드 - PUT, PATCH, DELETE
- PUT
- 기존에 리소스가 없으면 신규로 생성하고, 있으면 대체한다.
- POST와의 큰 차이점
- 첫째 클라이언트가 리소스를 식별한다
- 클라이언트가 리소스의 위치를 알고 URI를 지정한다.
- PUT /리소스/abcd HTTPversion
- 주의할 점은 기존 리소스를 완전히 대체한다는 것이다.
- 기존에 리소스의 데이터가 5개 있었는데 PUT을 이용하여 2개만 보내면 데이터가 2개로 변경된다.
- PATCH
- 기존의 리소스에서 부분 변경을 하게 한다
- PATCH /리소스/abcd HTTPversion
- DELETE
- 리소스 제거
- DELETE /리소스/abcd HTTPversion
TTP 메서드의 속성
- 안전
- 호출해도 리소스를 변경하지 않는다
- GET
- 멱등
- 한 번 호출하든 100번 호출하든 모든 결과가 똑같다
- GET : 조회는 여러번 해도 결과가 바뀌지 않는다
- PUT : 같은 데이터를 계속해서 요청하면 결국 같은 값이 대체되므로 결과가 같다
- DELETE : 어차피 한 번 삭제되면 계속 삭제된 상태기 때문에 여러번 해도 결과가 같다
- POST는 멱등 X, 주문을 2번 3번 하게되면 안되기 때문에
- 멱등의 활용
- 자동 복구 매커니즘
- 서버에 멱등이 되는 메소드를 요청했는데 결과가 안넘어온다(시간지연 또는 기타문제)
- 그럼 같은 메소드를 요청할 수 있다
- 캐시가능
- 응답 결과 리소스가 캐시로 되는 것
- GET, HEAD, POST, PATCH 가능
- 실제로는 GET, HEAD 정도만 사용
- POST, PATCH는 캐쉬 구현이 쉽지가 않다.
출처
- 인프런의 김영한님의 강의를 듣고 정리한 것입니다.