본문 바로가기

TIL(Today I Learned)

TIL-231030(HTTP Method)

📝오늘 공부한 것

  • HTTP Method 공부
  • 커리어톤 참여하기
  • 프로그래머스 문제풀기

📌 HTTP Method

📍 HTTP Method

  • HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타낸다.
  • 클라이언트와 서버 사이에 이루어지는 요청(Request)와 응답(Response) 데이터를 전송하는 방식을 일컫는다.
  • 즉, 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법

 

📍 GET

  • 리소스 조회 메서드
  • HTTP 명세에 의하면 GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다.
  • idempotent(멱등성) 하다.
  • 조회할 때 POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능하여 같은 데이터를 한번 더 조회할 경우에 저장한 값을 사용하여 조회 속도가 빨라진다.
  • 민감한 데이터를 처리할 때 GET 요청을 사용하면 안된다.
  • 길이 제한이 있다.

✔ idempotent(멱등성) - 여러번 수행해도 결과가 같다.

 

📍 HEAD

  • Get 메서드와 동일하지만 서버에서 body를 return 하지 않는다.
  • 리소스를 받지 않고 오직 찾기만 할 때
  • Object가 존재할 경우 응답의 상태 코드만 확인할 때
  • 서버의 응답 헤더를 봄으로써 리소스가 수정 되었는지 확인 가능
  • GET 요청을 하기 전에 GET 요청이 반환할 내용을 확인하는데 유용하다.
  • 상태코드를 통해 페이지 사용 가능 여부를 확인하고 파일 크기를 빠르게 찾는데 사용된다.

 

📍 POST

  • 전달할 데이터 처리/생성 요청 메서드
  • 메시지 body를 통해 서버로 요청 데이터를 전달하면 서버는 요청 데이터를 처리하여 업데이트
  • idempotent(멱등성) 하지 않다.
  • POST 요청을 반복적으로 호출하면 동일한 리소스를 여러 번 생성하는 부작용이 있다.
  • 전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
  • 만약, 데이터를 GET 할 때, JSON으로 조회데이터를 넘겨야 하는 애매한 경우 POST를 사용
  • 데이터 길이에 대한 제한이 없다.

 

📍 PUT

  • 리소스를 생성/업데이트하는 메서드
  • 만약 요청 메시지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다.
  • 데이터를 대체해야하므로, 클라이언트가 리소스의 구체적인 전체 경로를 지정해서 보내주어야 한다.
  • idempotent(멱등성) 하다.
  • 목적 리소스 모든 현재 표시를 요청 payload로 바꾼다.

 

📍 DELETE

  • 특정 리소스를 삭제하는 메서드
  • 그러나 HTTP 규격에는 클라이언트의 요청에도 서버가 무효화 시킬 수 있도록 정의되어 있다.
  • DELETE Method는 항상 보장되지 않는다.

 

📍 CONNECT

  • 목적 리소스로 식별되는 서버로의 터널을 맺는다.

 

📍 OPTIONS

  • preflight에 사용되는 메서드로 본 요청을 하기 전에 안전한지 미리 검사하는 것이라고 보면 된다.
  • 서버의 지원 가능한 HTTP 메서드와 출처를 응답 받아 CORS 정책을 검사하기 위한 요청이다.
  • 목적 리소스의 통신을 설정하는 데 쓰인다.

 

📍 TRACE

  • 일종의 검사용이라고 할 수 있다.
  • 클라이언트로부터 Request Packet이 방화벽, Proxy Server, Gateway등을 거치면서 packet의 변조가 일어날 수 있는데, 이때 Server에 도달 했을 때의 최종 Packet의 Request Packet을 볼 수 있다.
  • 즉, Original Data와 서버에 도달했을 때의 비교본 데이터를 서버의 응답 body를 통해 확인할 수 있다.
  • 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(body)로 수신한 메시지를 반송해야 한다.
  • 최초 클라이언트 요청에는 body가 포함될 수 없다.
  • 대상 리소스의 경로를 테스트하는 메시지 loop-back 테스트를 수행한다(디버깅 목적에 유용함).

 

📍 PATCH

리소스의 부분만을 수정하는 메서드

 

📍 HTTP Method 속성

멱등성

  • GET, PUT, DELETE는 멱등하다.
  • POST, PATCH는 멱등하다고 볼수 없다.
  • POST는 여러 번 호출하면 여러 리소스가 생성되므로 멱등성이 없다.
  • PATCH는 멱등성을 가질 수 있지만 항상 그런 것은 아니다.

캐시가능

  • GET, HEAD, POST, PATCH 모두 캐시가 가능하지만 실제로는 GET과 HEAD만 주로 캐싱이 쓰인다고 한다.

 

 

 

 

 

 

 

 

 

 

References :

https://developer.mozilla.org/ko/docs/Web/HTTP/Methods

https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC

https://medium.com/@lyhlg0201/http-method-d561b77df7

https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE

https://www.w3schools.com/tags/ref_httpmethods.asp

https://en.wikipedia.org/wiki/HTTP

https://blog.postman.com/what-are-http-methods/

'TIL(Today I Learned)' 카테고리의 다른 글

TIL-231101(HTTP Status Code)  (0) 2023.11.01
TIL-231031(Garbage Collection)  (0) 2023.10.31
TIL-231028(Spring Framework)  (0) 2023.10.28
TIL-231027(WAS, WS)  (0) 2023.10.27
TIL-231026(REST API)  (0) 2023.10.26