[HTTP] HTTP 메서드

괭이밥·2022년 12월 5일
0

HTTP

목록 보기
4/6
post-thumbnail

🔎 목차

  1. HTTP 메서드 종류
  2. GET
  3. POST
  4. PUT
  5. PATCH
  6. DELETE
  7. HTTP 메서드 속성

📌 HTTP 메서드 종류

주요 메서드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스 대체, 해당 리소스 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

기타 메서드

  • HEAD : GET과 동일, 메시지 부분 제외하고 상태줄과 헤더만 반환
  • OPTIONS : 대상 리소스에 대한 통신 가능 옵션
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널 설정
  • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트 수행


📌 GET

  • 리소스를 조회한다.
  • 서버에 전달하는 데이터는 쿼리 파라미터, 쿼리 스트링을 이용한다.
  • 메시지 바디를 통한 데이터 전달 가능하지만 지원하지 않는 곳이 많다.

동작 방식

  1. 클라이언트가 서버에게 GET으로 리소스 조회한다.

  2. 서버는 해당 리소스를 데이터베이스를 통해 조회한다.

  3. 조회한 데이터를 바탕으로 HTTP 응답 메시지를 만들어 보낸다.


📌 POST

  • 요청 데이터를 처리한다.
  • 클라이언트는 메시지 바디를 통해 요청 데이터를 보낸다.
  • 주로 신규 리소스 등록에 이용한다.

동작 방식 - 신규 리소스 생성

  1. 클라이언트가 서버에게 메시지 전달한다.

  2. 서버는 신규 리소스 식별자를 생성하고 데이터베이스에 등록한다.

  3. 서버에서 응답 메시지를 작성해서 보낸다.

  • Location 헤더 통해 자원이 생성된 경로를 보낸다.

추가 - POST가 하는 일

  • 리소스 URI마다 POST 요청이 오면 요청 데이터 어떻게 처리할지 정한다.
  • 데이터 처리는 새 리소스 등록도 있지만 프로세스 처리와 같은 많은 일을 할 수 있다. 이는 내부 프로세스에 따라 다르다.
    • ex. 주문 -> 결제완료 -> 배달시작 -> 배달완료 처럼 프로세스 상태 변경
    • ex. 리소스 조회하면서 메시지 바디를 담고 싶을 때


📌 PUT

  • 리소스를 대체한다.
    • 리소스가 있으면 완전히 바꾼다!
      • 리소스를 변경하기 위해 리소스의 모든 데이터를 담아 보내야함!
    • 리소스가 없으면 새로 생성한다.
  • 클라이언트가 리소스를 식별하여 URI로 경로를 담아 보낸다.

동작 방식 - 리소스 있는 경우

  1. 클라이언트가 memebrs/100 의 나이를 바꾸기 위해 메시지 바디에 나이를 담아 보낸다.

  2. 서버는 해당 리소스의 데이터를 완전 바꾼다. 따라서 members/100에는 username이 사라진다.


동작 방식 - 리소스 없는 경우

  1. 클라이언트는 members/100 경로를 지정하여 데이터를 보낸다.

  2. 서버는 해당 URI 경로에 리소스를 생성한다.



📌 PATCH

  • 리소스를 부분 변경한다.
    • PUT과 다르게 완전 대체하지 않는다.
  • PATCH를 지원하지 않는 브라우저도 있다. 이는 POST로 해결할 수 있다.

동작 방식

  1. 위의 PUT 첫 번째 예제와 같이 나이만 변경하기 위해 다음과 같이 요청 메시지를 보낸다.

  2. 서버는 해당 데이터만 교체한다.



📌 DELETE

  • 리소스를 제거한다.
  • 클라이언트가 삭제할 리소스의 URI로 경로를 담아 요청한다.

동작 방식

  1. 클라이언트는 memebrs/100 삭제 요청을 보낸다.

  2. 서버는 해당 리소스를 데이터베이스에서 삭제한다.



📌 HTTP 메서드 속성

안전(safe)

  • 안전은 호출해도 리소스를 변경하지 않는 것이다.
  • GET, HEAD이 이에 해당한다.

멱등(Idempotent)

  • 동일한 요청을 여러번 보내도 결과가 똑같다.
  • GET, PUT, DELETE가 이에 해당한다.
  • POST는 멱등하지 않다!
    • ex. POST로 결제 요청 -> 2번 요청하면 2번 결제된다.!
  • 자동 복구 매커니즘에 활용할 수 있다.
    • 서버가 정상 응답을 주지 못하였을 때 같은 요청 보내도 되는지 판단 근거가 된다.

캐시 가능

  • 응답 결과 리소스를 캐시하여 사용 가능한지 판단한다.
  • GET, HEAD, POST, PATCH 캐시 가능하다.
    • 실제 GET, HEAD 정도만 캐시로 이용한다.
    • POST, PATCH는 본문 내용까지 캐시 키로 고려하기 쉽지 않기 때문이다.


출처
인프런 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의

profile
사람들이 움직이는게

0개의 댓글