2017-01-12 5 views
1

옵션 1 : 앞에 업데이트되지 않으면 빈 필드를 보냅니다. 뒤쪽이 비어 있는지 확인하십시오.PUT 호출을 처리 할 때 ressource 필드가 업데이트되었는지 확인하는 방법

옵션 2 : 업데이트되지 않은 경우 필드를 요청에 포함하지 마십시오. 필드가 뒷면에 있는지 확인하십시오.

옵션 3 : 필드 값을 이전 값과 같더라도 앞에 표시하십시오. 요청 필드가 데이터베이스의 기존 값과 동일한 지 확인하십시오.

답변

1

PUT 요청의 의미는 본문이 리소스의 새로운 상태를 완전히 나타내는 것입니다. 클라이언트가 보낸 표현은 데이터 영역의 기존 표현을 완전히 덮어 씁니다.

원하는대로 누락 된 속성은 기본값이 비어 있거나 null이거나 422 UNPROCESSABLE ENTITY (또는 WebDAV에 알레르기 반응이있는 경우 400 BAD REQUEST)이 될 수 있습니다. 빈 값/null 값이있는 모든 속성은 데이터 계층에서 비어 있음/null로 설정됩니다.

아마 필드가 동일한 지 확인할 필요가 없습니다. 데이터베이스에 무엇이 있는지 그냥 잡으십시오.

필드의 하위 집합을 업데이트하려면 PATCH, POST 또는 마이크로 리소스 및 PUT이 필요합니다.

+0

우리는 부분적으로 하나의 필드 또는 필드 조합을 업데이트하기 위해 put 요청을 사용하고 있으며 많은 유연성 (여러 사용자의 경우 하나의 경로)을 제공합니다. API 클라이언트 (Angular SPA)가 귀하의 답변에서 제안한대로 할 경우, 하나만 업데이트해야하는 경우에도 모든 필드 값을 가져야하며 이러한 정보는 항상 사용할 수있는 것은 아닙니다. 예 : 나이 만 업데이트해야하는 경우 모든 사용자 필드를 가져와 보내야하는 이유는 무엇입니까? – user2080105

+2

@ user2080105이 작업은 https://tools.ietf.org/html에서 PUT의 의미를 위반하는 것입니다. /rfc7231#section-4.3.4. 인터넷 경찰이 당신을 막을 수는 없지만 PUT의 멱등 원 (https://tools.ietf.org/html/rfc7231#section-4.2.2)을 잃어 버리는 것을 알고 있어야합니다. 내가 제안한 대안을 고려해 볼 수 있습니다. –