(json) REST API에서 작업하는 동안 우리는 user
리소스가있는 상황이 발생했습니다. 필드 (email
)가 PUT
에서 덮어 쓰지 않도록하고 싶었습니다. 제가 올바르게 이해한다면, PUT은 이전 것을 대신 할 자원의 전체 표현을 포함해야합니다.HTTP PUT 요청에서 일부 필드가 업데이트되지 않도록하기 위해 409 충돌 상태 코드를 사용할 수 있습니까
> GET /user/123 HTTP/1.1
> Host: example.com
> Authorization: Bearer XXXXX
> Accept: application/json
< HTTP/1.1 200 OK
< Content-Type: application/json
<
< { "name": "John Smiht"
< , "email": "[email protected]"
< }
그리고 당신은, 당신이 할 것 존 스미스의 이름에 오타를 수정 싶어 다음 API에서 사용자를 가져 오는 경우
그래서 예를 들어, (일부 헤더는 단순화를 위해 왼쪽으로) :> PUT /user/123 HTTP/1.1
> Host: example.com
> Content-Type: application/json
>
> { "name": "John Smith"
> , "email": "[email protected]"
> }
< HTTP/1.1 201 No Content
이제 누군가 다른 전자 메일 주소를 입력하면 요청이 처리되지 않았 음을 나타내는 409를 사용할 수 있습니까? https://tools.ietf.org/html/rfc2616
- 400 Bad Request에 따르면
> PUT /user/123 HTTP/1.1 > Host: example.com > Content-Type: application/json > > { "name": "John Smith" > , "email": "[email protected]" > } < HTTP/1.1 409 Conflict < Content-Type: application/json < < { "errorNumber": "XXX" < , "errorMessage": "Not allowed to change e-mail address this way" < }
는
- 403 Forbidden이 사용될 수있다 (이 아닌) 잘못된 구문을 표시하지만, 그것이 액세스에 대한 자세한 것을 나에게 보인다 전체 리소스, 일부가 아님
- 409 Conflict은 요청을 수행 할 수 없다는 기술적 이유에 관한 것으로 보이며, 뭔가를 할 수있는 권한에 관한 것이 아닙니다.
내 질문은 : 어떤 상태 코드를 사용해야합니까?
편집 : 허용 대답; 응답은 사용자가 서버가 사용자를 이해로 전자 메일 주소 (403)가 올바른 코드가 될 것이다 변경할 수있는 권한을 가지고 있지만 그것을 행동을 거부하지 않은 경우
> PUT /user/123 HTTP/1.1
> Host: example.com
> Content-Type: application/json
>
> { "name": "John Smith"
> , "email": "[email protected]"
> }
< HTTP/1.1 403 Forbidden
< Content-Type: application/json
<
< { "errorNumber": "XXX"
< , "errorMessage": "Not allowed to change e-mail address this way"
< }
맞아, 나는 당신의 추론에 동의한다고 생각합니다. 답변을 수락 :-) – mhogerheijde