REST API에서 엔터티의 모든 속성을 업데이트하려는 경우 모범 사례 측면에서 사용하는 것이 더 낫습니까? PUT
또는 PATCH
? 사용하는 것이 더 낫다면 PATCH
왜 PUT
필요합니까? 둘의 차이점은 무엇입니까?
모든 필드가 업데이트되면 두 작업이 모두 멱 등성입니다. 맞습니까? 그렇다면 차이점은 무엇입니까?
PUT
멱 등성 PATCH
입니다. 멱 등성이 라는 사실 PUT
은 범용 구성 요소가 응답을 생성하는 데 필요한만큼 단일 요청을 반복 할 수 있음을 의미합니다 .
PATCH
와 같이 POST
멱등 의미론을 약속하지 않습니다. 따라서 범용 구성 요소는 자체적으로 수행 할 수있는 작업 측면에서 더 엄격하게 제한됩니다.
모든 필드가 업데이트되면 두 작업이 모두 멱 등성입니다. 맞습니까?
범용 구성 요소는 모든 필드가 업데이트되었는지 여부를 이해하지 못합니다. 높은 수준의 휴리스틱은 다음과 같습니다. 범용 구성 요소는 HTTP 헤더의 의미를 이해하지만 반드시 메시지 본문의 의미를 이해하지는 않습니다.
그리고이 경우 전체 리소스의 PATCH가 멱 등성이 아닌 이유는 무엇입니까?
실제로 PATCH의 구현은 멱 등성을 가질 수 있습니다. 그러나 반드시 그럴 필요는 없습니다. PATCH 요청의 의미는 멱등 처리를 약속 하지 않으므로 범용 구성 요소가 가정해서는 안됩니다.
도움이 될 수있는 비유 : GET이 안전 하기 때문에 쿼리에 GET을 사용하는 것을 선호 합니다 . 그러나 때로는 다른 것 (사실상 URI 길이 제한과 같은)이 방해가되어 POST를 사용해야합니다. 효과적으로 읽기 전용 인 POST 핸들러를 생성 할 수없는 이유가 전혀 없습니다.
그러나 우리가 가지고 있지 않은 것은이 특별한 POST 사용이 안전하다는 것을 범용 클라이언트에 알릴 수있는 메커니즘입니다.
GET은 안전하다고 정의되어 있으므로 전 세계의 모든 리소스가 안전하게 처리해야합니다. POST는 안전하다고 정의 되지 않았습니다 . 세계의 일부 리소스 만이 POST를 안전하게 처리합니다. 따라서 범용 구성 요소는 특정 리소스가 POST 요청을 안전하게 처리 한다고 가정 할 수 없습니다 .
멱등 의미론과 PUT 대 POST / PATCH도 마찬가지입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다