코딩

[HTTP] PATCH 그리고 OPTIONS

lwz7 2024. 9. 13. 16:15

https://lwz7.tistory.com/6

 

[HTTP] PUT, DELETE 그리고 멱등성

https://lwz7.tistory.com/5  [HTTP] GET 방식과 POST 방식GET 방식과 POST 방식 GET 방식과 POST 방식은 웹에서 가장 많이 사용되는 HTTP 요청 메서드입니다. 이 두 메서드는 각각의 용도에 따라 클라이언트와

lwz7.tistory.com

 

최근 DRF를 공부하며 HTTP 메서드들을 자주 마주치고 있습니다. HTTP 관련 포스트를 작성하면서 저도 많은 공부가 되는 것 같습니다. 이번 포스팅에서는 지난 포스팅에 이어 REST API를 다룰 때 유용한 HTTP 메서드인 PATCH, OPTIONS에 대해 알아보겠습니다.

 

PATCH

PATCH는 데이터의 일부만 업데이트할 때 사용됩니다. 예를 들어 블로그 포스트의 제목만 수정하거나, 사용자 프로필에서 특정 정보만 업데이트할 때 PATCH를 사용할 수 있습니다.

 

 

PATCH의 멱등성

PATCH의 멱등성 여부는 요청에 따라 달라집니다. 만약 텍스트를 특정 값으로 바꾸는 요청을 계속해서 보내면 결과는 항상 같습니다. 하지만 가격이 10000원인 상품의 가격을 10% 인상하는 요청을 여러 번 보낸다고 가정한다면 요청할 때마다 가격이 계속해서 인상될 것입니다. 이런 경우 PATCH는 멱등성을 가지지 않습니다.

 

PUT과 PATCH의 차이점

  • PUT은 데이터 전체를 덮어씌워 대체하는 방식으로 업데이트를 합니다.
  • PATCH는 데이터의 특정 부분만 수정하는 방식입니다.

 

어떤 상황에 PUT과 PATCH를 사용하는 것이 적절할까?

  • PUT은 데이터의 모든 필드를 갱신해야 하는 상황에 적합합니다. 예를 들어 사용자 프로필 전체를 수정해야 하는 상황에 PUT을 사용할 수 있습니다.
  • PATCH는 규모가 큰 데이터의 일부만 수정해야 할 때 사용하면 서버에 불필요한 부담을 덜 수 있습니다. 위와 동일한 예시를 들자면 사용자 프로필에서 비밀번호만 수정해야 하는 상황에 사용할 수 있겠습니다.

 

 

OPTIONS

OPTIONS는 특정 페이지에서 어떤 HTTP 메서드를 지원하는지 확인할 때 사용됩니다. 이 메서드는 클라이언트가 어떤 작업을 할 수 있는지 미리 확인할 수 있게 해 줍니다.

 

 

이해를 돕기 위해 DRF로 만들어 두었던 URL에 Thunder Client로 OPTIONS 요청을 보내보겠습니다.

 

 

아래와 같은 응답을 확인할 수 있습니다.

 

이 응답을 통해 해당 URL에서 지원하는 메서드 목록을 확인할 수 있습니다.

 

 

추가적으로, DRF에서는 해당 URL에서 사용할 수 있는 메서드뿐만 아니라 메서드별로 지원하는 필드의 세부 정보까지 제공합니다.

{
  "name": "Post List",
  "description": "",
  "renders": [
    "application/json",
    "text/html"
  ],
  "parses": [
    "application/json",
    "application/x-www-form-urlencoded",
    "multipart/form-data"
  ],
  "actions": {
    "POST": {
      "id": {
        "type": "integer",
        "required": false,
        "read_only": true,
        "label": "ID"
      },
      "author": {
        "type": "field",
        "required": false,
        "read_only": true,
        "label": "Author"
      },
     
     ...

 

이 응답은 이 페이지에서 POST 메서드를 사용할 때 클라이언트가 전송해야 하는 데이터와 서버에서 자동으로 설정되는 필드들을 상세히 알려줍니다. REST API를 개발하거나 디버깅할 때 OPTIONS 메서드를 잘 활용하면 매우 유용할 것 같습니다. 

 

'코딩' 카테고리의 다른 글

[Web 기술] WebSocket이란?  (4) 2024.10.11
[HTTP] RESTful API 란?  (1) 2024.09.27
[HTTP] PUT, DELETE 그리고 멱등성  (1) 2024.09.05
[HTTP] GET 그리고 POST  (0) 2024.08.22
[GitHub] 초보 개발자를 위한 .gitignore 작성 요령과 팁  (0) 2024.08.20