프로그래밍/http
[ http ] 04. HTTP 메서드
Yanoo
2021. 11. 1. 21:49
728x90
반응형
HTTP 메서드 종류
- GET : 리소스 조회
- POST : 요청 데이터 처리, 주로 등록에 사용
- PUT : 리소스를 대체(해당 리소스가 없으면 생성)
- PATCH : 리소스 부분 변경
- DELETE : 리소스 삭제
기타 메서드
- HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
- OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)를 설명(주로 CORS에서 사용)
- CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
- TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
- GET
- 리소스 조회
- 서버에 전달하고 싶은 데이터는 query를 통해 전달
- 메시지 바디를 통해 데이터를 전달할 수 있지만, 지원 안하는 곳이 많아 권장X
- POST
- 요청 데이터 처리
- 메시지 바디를 통해 서버로 요청 데이터 전달
- 서버는 요청 데이터를 처리
- 메시지 바디로 들어온 데이터를 처리하는 모든 기능을 수행
- 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
하는 역할을 예로 보면
HTML 양식에 입력된 데이터 블록을 데이터 처리 프로세스에 제공하거나
게시판이나 블로그 등을 게시하고
서버가 식별하지 않은 새 리소스를 생성한다.
그리고 기존 자원에 데이터를 추가한다.
간단하게 다른 메서드로 처리하기 애매한 경우 POST를 사용하면 된다.
- PUT
- 리소스가 있으면 대체
- 리소스가 없으면 생성
- 쉽게 이야기해서 덮어버림
- 클라이언트가 리소스 위치를 알고 URI 지정, 즉 클라이언트가 리소스를 식별 => POST와 차이점이다.
- 리소스가 있는 경우
PUT으로 보내게 되면
리소스가 대체된다.
주의할 점이 있는데,
age만 보내게 되면, age만 바뀌는 것이 아니라
통째로 바뀌게 된다.
- 리소스가 없는 경우
리소스가 없으면 그냥 보낸 값으로 신규 생성한다.
기존의 리소스가 있을 때, 부분만을 수정하기 위해 사용하는 것이 PATCH
- PATCH
이렇게 보내게 되면 PATCH는
age만 수정이 된다.
- DELETE
- 리소스 제거
DELETE하면
제거된다.
HTTP 메서드의 속성
- 안전
- 멱등
- 캐시가능
- 안전(Safe)
- 호출해도 리소스를 변경하지 않는다. => GET같이 요청해도 리소스가 변하지 않는 것
- 해당 리소스만 고려한다. 계속 호출될 경우는 고려하지 않는다.
- 멱등(Idempotent)
- 한 번 호출하든 100번 호출하든 결과가 똑같다.
- 멱등 메서드
- GET : 한 번 조회하든, 두 번 조회하든 같은 결과 조회
- PUT : 결과를 대체, 같은 요청을 반복해도 결과는 같다.
- DELETE : 결과를 삭제, 같은 요청을 반복해도 삭제된 결과는 같다.
- POST는 멱등이 아니다. 두 번 호출하면 같은 결제가 중복해서 발생할 수 있음
- 캐시가능(Cacheable)
- 응답 결과 리소스를 캐시해서 사용해도 되는가?
- GET, HEAD, POST, PATHCH 캐시 가능
- 실제로는 GET, HEAD 정도만 캐시로 사용
- POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않음
728x90
반응형