2012-01-26 3 views
1

간단한 유스 케이스가 있습니다. 사용자에게 권한 집합이 있습니다. User 리소스를 만들 때도 Privileges를 만들고 싶지 않습니다. 특권이 이 존재하지 않는이 포함되어 있기 때문에OneToMany가있는 자원에서 Create 작업에 응답하는 올바른 HTTP 상태 코드는 무엇입니까

내가 사용자 리소스를 만들 수 없습니다 : 새로운 권한을 가진 새로운 사용자가 클라이언트에서 오는 경우에 따라서, 나는의 라인을 따라 뭔가로 응답합니다.

이 시점에서 클라이언트는 권한에 대한 생성을 먼저 수행 한 다음이를 사용자에게 추가하고 생성 할 수 있습니다.

문제는 HTTP 응답을를 사용하는 어떤 에러 상태 코드 입니다 :

  • 412 - 전제 조건이
  • 424
  • 실패 - 나는 또한 고려

실패 종속성 (하지만하지 유스 케이스에 맞게) :

  • 400 - 나쁜 R
  • 422 equest
  • - 처리 할 수 ​​없음 법인

답변

0

(422) 및 (424)는 특정 WebDAV를 의미를 가지고있다. 그래서 그들은 적용되지 않습니다.

412는 약 클라이언트에 대한 사전 형 식입니다. 그래서 그것은 또한 적용되지 않습니다.

아마도 409 충돌을 사용할 수 있습니다.

편집 : 409 충돌은 서버의 리소스를 불가능하거나 일치하지 않는 상태로 만들 것을 서버에 요청하는 것과 관련됩니다. 그래서 나는 그것이 당신의 표징에 적용되는 것이라고 생각합니다. 참조 된 권한이 클라이언트에 없으면 참조 된 사용자를 작성할 수 없습니다.

편집 : http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html를 살펴 보자

+0

422를 사용하면 문제가 없습니다. – Evert

+0

422 및 424의 WebDAV 특성을 지적 해 주셔서 감사합니다. 409 충돌이 여기에 적용되지 않는 것 같아서, 나는 무엇을 사용해야할지 잘 모릅니다. CLIENT 요청의 전제 조건은 클라이언트가 사용자 및 권한 생성을 요청한 것이기 때문에 사실입니다. 허용되지 않습니다. – Eugen

+0

412는 If-Unmodified-Since 또는 If-None-Match와 같이 요청 * 헤더에서 클라이언트가 지정한 전제 조건입니다. 그들은 자원 관계에 관한 것이 아닙니다. –

1

(409)는 좋은 소리; 클라이언트는 충돌을 해결하기 위해 별도의 요청을 할 수 있습니다.이 경우 작업이 성공한 것입니다. (사용자 정의 링크 관계가있는 링크를 사용하여 작업이 충돌 한 리소스를 식별 할 수 있습니다.)

+0

저에게 동의 해 주셔서 감사합니다. 이제 WebDAV 상태 코드는 어떻게됩니까? ;) –

관련 문제