HTTP Method

·2022년 6월 4일
0

HTTP란?

  • HTTP는 웹상에서 정보를 주고받을 수 있는 프로토콜을 의미하며 주로 HTML 문서를 주고받는데 쓰인다.
  • HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜로 클라이언트인 웹이 HTTP를 통해 서버로부터 HTML이나 그림 정보를 요청하면 서버는 이 요청에 응답해 필요한 정보를 사용자에게 전달한다.
  • HTTP를 통해 전달되는 자료는 http:로 시작하는 URL로 조회할 수 있다.

HTTP의 흐름

  1. URL을 입력해 요청에 전달한다.
    • URL의 실제 IP주소를 알아내어 IP주소와 함께 입력한 URL의 정보가 요청으로 전달된다.
  2. HTTP Protocol을 사용해 HTTP Request Message를 생성한다.
    • HTTP Request Message
  3. HTTP Request Message는 TCP Protocol을 사용해 인터넷을 거쳐 해당 주소의 웹 서버로 전송한다.
  4. 웹 서버에서 받은 정보를 파악하여 응답한다.
    • 정적인 내용인 경우 WAS없이 요청사항을 제공
    • 동적인 경우 WAS에 요청을 전달하여 요청을 돌려받아 제공
  5. 응답받은 내용을 사용자에게 보여준다.

사용자가 무언가 요청하면 클라이언트가 브라우저를 통해 해당 서버에 요청(Request)을 보낸다. 서버에서는 요청을 받아 클라이언트에게 응답(Response)하고, 클라이언트는 응답받은 내용을 사용자에게 보여준다.

Method의 특징

안정성(Safe)

안전한 메서드의 목적은 서버에 영향을 줄 수 있는 메서드가 사용될 때 사용자들에게 그 사실을 알려줄 수 있게 하는 것이다.
읽기 전용일때 안전한 메서드로 간주하며 GET, HEAD, OPTIONS, TRACE가 안전한 메서드로 정의된다.

멱등성(Idempotent)

특정 메서드의 요청을 여러번 하더라도 동일한 결과가 반환될때 멱등하다고 한다.
멱등성을 가지는 메서드에는 GET, PUT, DELETE, HEAD, OPTIONS, TRACE가 있다.

캐시 가능성

향후 재사용을 위해 응답을 저장할 수 있음을 나타낸다.
현재 시점의 응답이나 응답에 의존 하지 않은 안전한 메서드는 캐시 가능한것으로 정의 한다.

HTTP Method

주요 메소드 5가지

  • GET / 데이터 검색
    • 리소스를 표현하거나 정보를 검색한다.
    • 여러개의 동일한 요청을 수행하면 매번 동일한 결과가 생성되어야한다.(멱등성을 가져야한다.)
    • 응답코드
      • 서버에서 리소스를 찾으면 XML또는 JSON 형식의 응답과 함께 응답코드 200(OK)을 반환한다.
      • 리소스를 찾지 못한 경우 404(NOT FOUND)를 반환한다.
      • 구성이 올바르지 않은 경우 400(BAD REQUEST)를 반환한다.
  • POST / 데이터 추가, 작성
    • 새 종속 리소스를 생성한다.
    • 멱등성을 가지지 않으며 동일한 POST요청을 하여도 다른 리소스가 생성된다.
    • 응답코드
      • 리소스가 서버에 생성된 경우 응답코드 201(CREATED)와 함께 요청 상태를 설명하고 리소스를 참조하는 데이터가 함께 반환된다.
      • URI로 식별할 수 있는 리소스가 생성되지 않는 경우 204(NOT CONTENT)를 반환한다.
  • PUT / 데이터 갱신, 작성
    • 기존 리소스를 수정한다.(리소스가 없는 경우 새 리소스를 생성할지 여부를 결정할 수 있다.)
    • 응답코드
      • 새 리소스가 생성된 경우 201(CREATED)를 반환한다.
      • 기존 데이터가 수정되면 200(OK)도는 204(NOT CONTENT)로 반환한다.
  • DELETE / 데이터 삭제
    • 기존 리소스를 삭제한다.(리소스가 없는 경우 새 리소스를 생성할지 여부를 결정할 수 있다.)
    • 응답코드
      • 성공적으로 삭제 시 200(OK)가 반환된다.
      • 요청은 정상이지만 서버가 완료하지 못한경우 202(ACCEPTED)를 반환한다.
      • 자원 삭제 후 해당 자원이 사라져 응답할 내용이 없는경우 204(NO CONTENT)를 반환한다.
  • PATCH / 데이터 일부분 수정
    • 리소스를 부분적으로 업데이트한다.
    • 응답코드
      • 성공적으로 삭제 시 200(OK)가 반환된다.
      • 요청은 정상이지만 서버가 완료하지 못한경우 202(ACCEPTED)를 반환한다.
      • 자원 삭제 후 해당 자원이 사라져 응답할 내용이 없는경우 204(NO CONTENT)를 반환한다.

기타 메소드 4가지

  • HEAD: 서버 리소스의 헤더(메타 데이터의 취득)
  • OPTIONS: 리소스가 지원하고 있는 메소드의 취득
  • CONNECT: 프록시 동작의 터널 접속을 변경
  • TRACE: 원격 서버에 루프백 메세지를 호출하기 위해 테스트용도로 사용

POST와 GET의 차이

GET은 멱등성을 가지게 설계되었고 POST는 멱등성이 없게 설계되었다. 따라서 GET은 설계 원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야하기 때문에 조회를 위해서만 사용해야한다.

POST와 PUT의 차이

POST는 INSERT의 개념, PUT은 UPDATE의 개념으로 이해하면 좋다. POST는 멱등성을 가지지 않지만 PUT은 멱등성을 가지기 때문에 POST의 경우 서버 자원의 변화가 생기지만 PUT의 경우 변화가 생기지 않는다.

PUT과 PATCH의 차이

PUT은 해당 자원의 전체 교체를 의미하고, PATCH는 일부 자원을 변경한다는 의미이다.

{ "name":"홍길동", "age":"20" }
PUT /api/user { "age":"30" }   ➡️ { "name":null, "age":"30" }
PATCH /api/user { "age":"30" } ➡️ { "name":"홍길동", "age":"30" }
profile
으쌰으쌰🐜🐜

0개의 댓글