프로그래밍/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
반응형