PUT vs PATCH&PUT vs POST

소개하다.


최근의 인터뷰에서 나는 PUTPATCH 사이의 차이를 설명해 달라는 요청을 받았다."아, 그래, 이것은 흔히 볼 수 있는 면접 문제야!"라고 생각할 수도 있다.그런데 그거 아세요? 흔하다고 생각하지만, 저는 사실 이 질문에 어떻게 대답해야 할지 몰라요(네, 거절당했어요.하하)🥲). 지금 저는 교훈을 얻었습니다. 저는 글을 한 편 쓰기로 했습니다. 자신의 이해를 돕기 위해서일 뿐만 아니라 당신(다음)의 인터뷰를 준비하는 사람들을 위해서이기도 합니다!
당신의feed나 구글을 통해 이 글을 찾으신 분들께 환영합니다!이 글에서, 나는 반드시 너의 면접에 직접적인 답안을 제공할 것은 아니지만, 나는 그것이 충분히 전면적이고, 네가 면접 준비를 하는 데 도움이 되기를 바란다.또한, 나는 어떤 새로운 자료/발견/견해를 제공하지 않지만, 이것은 더욱 철저한 비망이라고 고려해 주십시오!
본고에서 저는 당신이 REST에서 HTTP 방법의 기본 지식을 이해했다고 가정하지만 차이를 깊이 있게 연구하기 전에 간단한 회고를 하겠습니다.

게시, 배치 및 패치


POST란?

  • Create인치CRUD
  • 자원 집합
  • 에서 새로운 자원을 만드는 방법
  • 새 리소스를 만들면 서버에서 자동으로 이 리소스에 대한 ID를 할당합니다.
  • 생성에 성공하면 HTTP 상태 코드201 (CREATED)를 반환하고 링크가 있는 위치 헤드https://www.example.com/recipes/1를 반환합니다.
  • 이 방법은 안전하지도 않고 멱도 없다.다시 말하면 두 개의 같은 POST 요청을 호출하면 두 개의 서로 다른 자원이 같은 정보를 포함하게 된다
  • Axios 구문(예: Educational.io)
    const axios = require('axios')
    
    axios.post('https:sample-endpoint.com/user', {
        Name: 'Fred',
        Age: '23'
      })
      .then(function (response) {
        console.log(response);
      })
    

    뭘 넣지?

  • Update인치CRUD
  • 기존 자원을 주로 갱신하는 방법.자원이 없으면 API에서 자원의 생성을 결정할 수 있습니다.
  • 업데이트에 성공하면 HTTP 상태 코드200 (OK), 업데이트가 없으면 204 (No Content)로 돌아갑니다.성공적으로 생성되면 HTTP 상태 코드201 (CREATED)가 반환됩니다.
  • 이 방법은 자원 내의 상태를 수정하거나 만들기 때문에 안전하지 않습니다.
  • 그러나 이것은 幂 등이다. 같은 호출을 사용하여 자원을 만들거나 갱신하면 자원이 같은 호출에서 같고 같은 상태를 가지기 때문이다.
  • Axios의 구문Jason Watmore 예제
    const article = { title: 'React PUT Request Example' };
    axios.put('https://reqres.in/api/articles/1', article)
      .then(response => this.setState({ updatedAt: response.data.updatedAt }));
    

    패치란?

    UpdateinCRUD
  • 리소스를 부분적으로 업데이트하는 방법입니다.
  • 업데이트에 성공하면 HTTP 상태 코드200 (OK), 업데이트가 없으면 204 (No Content)로 돌아갑니다.
  • 이 방법은 안전하지도 않고 멱도 없다.
  • Axios의 구문Mastering JS 예제
    const res = await axios.patch('https://httpbin.org/patch', 'hello=world');
    
    res.data.headers['Content-Type']; // application/x-www-form-urlencoded
    res.data.json; // { hello: 'world' }
    
    자, 이제 차이점을 이야기해 봅시다.

    배달하다


    1. 작성 및/또는 업데이트?


    가장 뚜렷한 차이점은 PUT는 자원을 창설하고 수정할 수 있지만 POST는 자원을 창설할 수 밖에 없다는 것이다.PUT의 경우 이미 존재하는 리소스를 참조하도록 URI를 요청하면 업데이트 작업이 발생하고, 그렇지 않으면 유효한 리소스 URI를 요청하면 새 리소스가 생성됩니다.
    URI 담당자 요청:

    The request URI is the uniform resource identifier of the resource to which the request applies. While URIs can theoretically refer to either uniform resource locators (URLs) or uniform resource names (URNs), at the present time a URI is almost always an HTTP URL that follows the standard syntax rules of Web URLs.


    자세한 내용here
    요청 구문은 다음과 같습니다. PUT /users/{user-id}POST의 경우 소스 서버는 URI ID를 요청하는 리소스의 새 종속으로 요청을 승인합니다.
    요청 구문은 다음과 같습니다. POST /users

    2.멱

    PUT 방법은 멱이다.다시 말하면 요청을 여러 번 보내면 수정을 요청하는 것과 같다.
    그러나 POST 방법은 멱이 아니다.요청을 여러 번 보내려고 하면 서버에 여러 개의 URI 리소스가 있습니다.

    3. 실천 중


    일반적으로 PUT 방법은 UPDATE 조작에 사용되고 POST 방법은 CREATE 조작에 사용된다.

    배치 vs 패치


    1. a.k.a 부분 또는 전부 업데이트

    PUTPATCH 리소스 업데이트에 사용할 수 있습니다.그러나 이 두 가지 가장 큰 차이점은 하나는 자원을 갱신하고 교체할 수 있고 다른 하나는 부분적으로 갱신할 수 있다는 것이다.
    다시 말하면 PUT 요청을 할 때 첨부된 실체(당신이 요청한 특정 장소)는 자원의 수정 버전으로 간주되고 클라이언트가 새로운 정보로 교체할 것을 요청한다.PATCH 요청을 보냈을 때, 일부 자원만 수정합니다.
    나는 이 위대한 자원을 발견했다. 집을 짓는 것을 예로 들면 다음과 같다link와 저자의 시범이다.
    만약 우리가 이 집을 가지고 있다면:
    // House on plot 1
    {
      address: 'plot 1',
      owner: 'segun',
      type: 'duplex',
      color: 'green',
      rooms: '5',
      kitchens: '1',
      windows: 20
    }
    
    PUT
    // PUT request payload to update windows of House on plot 1
    {
      address: 'plot 1',
      owner: 'segun',
      type: 'duplex',
      color: 'green',
      rooms: '5',
      kitchens: '1',
      windows: 21
    }
    
    PATCH
    // Patch request payload to update windows on the House
    {
      windows: 21
    }
    

    2.멱

    PUT는 멱 등이고 원인은 위에서 말한 바와 같이 PATCH는 멱 등이 아니다.요청을 다시 시도하면 요청이 실패(Method Not Allowed)합니다.만약 PATCH 요청이 존재하지 않는 URI에 대한 것이라면, 요청은 실패할 뿐, PUT 이런 새로운 자원을 만들지 않을 것입니다.

    네가 가기 전에...


    네가 이 문장에서 얻은 것이 있기를 바란다.본고를 요약하자면 이러한 방법의 주요 차이점은 幂 등성과 클라이언트로부터의 요청을 어떻게 처리하는가에 있다!
  • PUT vsPOST: 새로운 자원을 만들 수 있지만 PUT만 자원을 업데이트/수정할 수 있고 幂 등이지만 POST
  • 에는 적용되지 않는다
  • PUT vsPATCH: 자원을 수정/갱신할 수 있습니다.PATCH는 폐쇄된 실체를 부분적으로 수정할 수 있도록 허락했고 PUT는 기본적으로 전체 실체를 교체했다.
  • 만약 네가 더 많은 것을 알고 싶다면, 나는 약간의 진일보한 독서 자료를 첨부할 것이다.
    마지막이지만 가장 중요하지 않은 것은 즐거움 코드!

    리소스


    HTTP 메서드


  • HTTP Methods(REST API 자습서)
  • Using HTTP Methods for RESTful Services

  • (https://www.educative.io/edpresso/how-to-make-an-axios-post-request)(Educational.io)
  • 본문이 발표되기 일주일 전에 저는 다음과 같은 글을 썼습니다. 이것도 제가 언급한 부분입니다.
  • 배달하다


  • When to Use HTTP PUT and HTTP POST (케빈 소코체프 저자)

  • REST – PUT vs POST(REST API 자습서)
  • 배치 vs 패치


  • Use of PUT vs PATCH methods in REST API real life scenarios(스택 오버플로우)

  • RESTful API Design — PUT vs PATCH(작자: 세공 오라)

  • What’s the Difference between PUT vs PATCH?(Rapid API)
  • 좋은 웹페이지 즐겨찾기