http patch 예제

RFC 5789 (PATCH 메서드에 대 한 RFC)에서 예제는 다음과 같이 작동 하는 것 들을 보여 줄 것 이다: 우리는 HTTP PATCH를 사용 하 여 이메일 ID를 업데이트 하는 우리의 고객 데이터 모델의 예를 보여 주며 주요 문제는 여기 위의 충돌 예제로 돌아갑니다. 다른 사람이 운전자가 누구인지와 같은 다른 값을 변경하고 실수로 상태를 변경한 경우 보류 중인 상태로 다시 « 여행이 이미 시작되었지만 보류 중으로 돌아갈 수 없습니다 »라는 오류 메시지가 표시되고 « 나는 그것을 몰랐다 »고 생각할 것입니다. 시작, 난 그냥 게리 오늘 운전을 원했다. » 모두가 혼란스러워. PATCH가 허용된다는 또 다른 (암시적) 표시는 서버에서 허용하는 패치 문서 형식을 지정하는 Accept-Patch 헤더의 존재입니다. API를 구축할 때 여러분과 동료만이 업무 방식에 대한 공정한 기대를 가져야 하는 것은 아닙니다. 예를 들어 EmberJS와 같은 다른 시스템은 PUT 요청이 어떻게 작동하는지에 대한 몇 가지 기대를 가질 것이며, 그레인에 대해 가서 PUT이 부분 업데이트를 보내기 시작하면 좋지 않은 시간이 될 것입니다. 또 다른 해결책은 편집할 리소스의 속성을 노출하고 PUT 메서드를 사용하여 업데이트된 값을 보내는 것입니다. 아래 예에서 사용자 123의 이메일 속성이 노출됩니다: 우리는 PUT 및 PATCH에 대한 예를 보여주기 위해 동일한 고객 데이터 모델을 취할 것입니다. 서버는 클라이언트가 지원되지 않는 패치 문서를 보낼 때 지원되는 미디어 형식을 포함하는 Accept-Patch 응답 헤더를 통해 415(지원되지 않는 미디어 유형) 응답을 반환합니다. 이렇게 하면 클라이언트가 보낸 PATCH 문서를 요청된 리소스에 적용할 수 없음을 클라이언트에 알립니다. [1] PATCH 요청은 패치 하는 동안 데이터가 손상되지 않도록 Etags 및 If-Match 요청 헤더를 사용하는 조건부 요청과 같은 메커니즘을 사용해야 합니다.

[1] 패치 요청이 실패하거나 채널 또는 시간 시간이 실패한 경우 클라이언트는 GET 요청을 사용하여 리소스의 상태를 확인할 수 있습니다. [1] 서버는 악의적인 클라이언트가 과도한 서버 리소스를 사용하기 위해 PATCH 방법을 사용하지 않도록 해야 합니다. [1] 조립식 주택으로 `https://internet-street.com/plot-1`에 대한 PUT 요청을 할 때 « 플롯-1로 표시된 위치에 이 집을 넣어주세요 »라고 말하는 것입니다. 해당 명령은 지정된 위치를 검색하고 해당 위치의 콘텐츠를 대체합니다. 위치에 아무 것도 발견되지 않으면 리소스를 위치에 배치하기만 하면 됩니다. 이 경우, 전체 조립식 집. 따라서 PUT 요청에는 항상 전체 리소스가 포함됩니다. PUT 요청의 필요한 품질은 동일한 요청이 여러 번 이루어지더라도 동일한 결과를 생성하는 품질이기 때문에 필요합니다. 위와 동일한 PATCH 요청을 발행하는 경우 동일한 PATCH 요청을 보내더라도 중복 엔터티가 시스템에 생성됩니다(리소스변경https://prod-acb5.kxcdn.com/Customer.) (이 경우 패치는 Idempotent가 아닙니다).

위의 예제를 계속 하면 완전히 새 집을 배송하지 않고도 플롯 1의 집에 새 창을 쉽게 추가할 수 있습니다. 우리가해야 할 일은 창을 발송하고 새 창으로 오래된 집을 패치하는 것입니다. 다음은 보내야 할 페이로드의 예입니다. 예제의 응답이 메시지 본문을 전달하지 않기 때문에 성공적인 응답은 204 응답 코드로 표시됩니다. (200 코드에 대한 응답)을 사용합니다. 다른 성공 코드도 사용할 수 있습니다. 패치가 Idempotent가 될 필요가 없는 이유를 자세히 살펴보겠습니다. 우리는 그것을 더 명확하게 이해하기 위해 두 가지 예를 취할 것입니다. PATCH 요청은 idempotent일 수 있지만 필수는 아닙니다.

예를 들어 새 창을 추가하려는 경우 창 수가 변경된 경우에만 전자와 동일한 전체 프리팹 하우스로 PUT 요청을 만듭니다.