HTTP Method

Sujin Lee·2022년 9월 1일
0
post-thumbnail

1. 대표적인 4가지

  • GET
  • POST
  • PUT
  • DELETE

2. 종류 8가지

  • GET: 서버의 자원을 클라이언트로 가져오고싶을 때
  • POST: 서버에 새롭게 자원을 추가, 작성
  • PUT: 서버의 데이터를 갱신, 작성
  • DELETE: 서버의 데이터를 삭제
  • HEAD: 서버 리소스의 헤더 (메타 데이터의 취득)
  • OPTIONS: 리소스가 지원하고 있는 메소드이 취득
  • PATCH: 리소스의 일부분을 수정
  • CONNECT: 프록시 동작의 터널 접속을 변경

참고
멱등성(Idempotence)이란?
여러번 수행해도 결과가 같음을 의미한다. 즉, 호출로 인하여 데이터가 변형이 되지 않는다는 것을 의미한다.

1) GET

정의

  • GET 메소드는 주로 데이터를 읽거나(Read) 검색(Retrieve)할 때에 사용되는 메소드
  • 만약에 GET요청이 성공적으로 이루어진다면 XML이나 JSON과 함께 200 (Ok) HTTP 응답 코드를 리턴한다.
  • 에러가 발생하면 주로 404 (Not found) 에러나 400 (Bad request) 에러가 발생한다.
    • HTTP 명세에 의하면 GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다.
    • GET 요청은 idempotent 하다.
    • 같은 요청을 여러 번 하더라도 변함없이 항상 같은 응답을 받을 수 있다.
    • 데이터를 변경하는 연산에 사용하면 안된다.

예시

GET /user/1
  • 데이터를 조회하는 것이기 때문에 요청시에 Body 값과 Content-Type 가 비워져있다. 조회할 데이터에 대한 정보는 URL을 통해서 파라미터를 받고 있는 모습을 볼 수 있다.
  • 데이터 조회에 성공한다면 Body 값에 데이터 값을 저장하여 성공 응답을 보낸다.
  • GET은 캐싱이 가능하여 같은 데이터를 한번 더 조회할 경우에 저장한 값을 사용하여 조회 속도가 빨라진다.

2) POST

정의

  • POST 메소드는 주로 새로운 리소스를 생성(create)할 때 사용
  • 조금 더 구체적으로 POST는 하위 리소스(부모 리소스의 하위 리소스)들을 생성하는데 사용된다.
  • 성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환한다.
    • POST 요청은 idempotent 하지 않다.
    • 같은 POST 요청을 반복해서 했을 때 항상 같은 결과물이 나오는 것을 보장하지 않는다
    • 두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다른 resource를 반환할 가능성이 높다.

예시

POST /user
body: { data : "example" }
Content-Type: "application/json"
  • 데이터를 생성하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시
  • URL을 통해서 데이터를 받지 않고, Body 값을 통해서 받는다.
  • 데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.

3) PUT

정의

  • PUT은 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용
    • PUT 요청은 idempotent 합니다.
    • 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성됩니다.

예시

PUT /user/1
body: { data : "update example" }
Content-Type: "application/json"
  • 데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시
  • URL을 통해서 어떠한 데이터를 수정할지 파라미터를 받는다. 그리고 수정할 데이터 값을 Body 값을 통해서 받는다.
  • 데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.

3) DELETE

정의

  • DELETE 메서드는 지정된 리소스를 삭제합니다.

예시

DELETE /user/1
  • 데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다.
  • URL을 통해서 어떠한 데이터를 삭제할지 파라미터를 받는다.
  • 데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 된다.

👩🏻‍💻 자주하는 질문

  • POST방식이 GET방식보다 보안측면에서 더 좋다?
    GET과 비교하여 URL에 데이터의 정보가 들어 있지 않으므로 조금 더 안전하다고 볼 수 있다.
  • GET방식이 POST방식보다 속도가 빠르다?
    GET 방식은 캐싱을 하기 때문에 여러번 요청시 저장된 데이터를 활용하므로 조금 더 빠를 수 있다.
  • POST vs PUT
    POST와 PUT은 구분해서 사용해야한다. POST는 새로운 데이터를 계속 생성하기 때문에 요청시마다 데이터를 생성하지만, PUT은 사용자가 데이터를 지정하고 수정하는 것이기 때문에 같은 요청을 계속하더라도 데이터가 계속 생성되지는 않는다.
  • PUT vs PATCH
    • 정보를 수정할 수 있는 HTTP Method는 PUT, PATCH
    • PUT은 지정한 데이터를 전부 수정하는 Method이지만 PATCH는 정보의 일부분이 변경되는 방법입니다. 그래서 PUT은 멱등하지만, PATCH는 멱등하다고 볼 수 없습니다.
    • PUT: 자원의 전체 교체, 자원 교체 시 모든 필드 필요 ( 만약 전체가 아닌 일부만 전달할 경우, 전달한 필드 외 모두 null 또는 초기값 처리됨
    • PATCH: 자원의 부분 교체, 자원 교체 시 일부 필드 필요

https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE
https://papababo.tistory.com/entry/HTTP-METHOD-PUT-vs-PATCH-%EC%B0%A8%EC%9D%B4%EC%A0%90

profile
공부한 내용을 기록하는 공간입니다. 📝

0개의 댓글