2012-06-12 3 views
1

작업 목록이있는 RESTful 서비스가 있다고 가정 해 보겠습니다.편안한 서비스에서 고아 데이터 처리

GET mycorp/api/v1/tasks 

이러한 각 작업에는 하나 이상의 컨텍스트가있을 수 있습니다.

GET mycorp/api/v1/tasks?context=somecontext 

사용자는 사용 과정에서 일괄 처리를 삭제합니다.

DELETE mycorp/api/v1/tasks?context=somecontext 

이 작업은 우리가 지금 때문에 위의 DELETE 조치 시스템에 고아가되어 몇 컨텍스트를 가지고 수행되면 가정 할 수 있습니다. 또한 동일한 컨텍스트를 반복해서 입력해야하는 사용자를 저장하는 것이 고아 컨텍스트를 갖는 것이 좋습니다.

사용자 DID가 이러한 컨텍스트를 명시 적으로 제거하려는 경우 올바른 방법은 REST의 컨텍스트에서 무엇이 될까요? 나는 자연스럽게 두 가지 옵션으로 끌리고있다.

DELETE mycorp/api/v1/tasks?context=somecontext&&deleteorphancontexts=true 

또한

DELETE mycorp/api/v1/contexts?isorphaned=true 

는 아직도 확실히 내가 빌드 API는 sensical 견고하게하기 위해 휴식을 새로운 무엇입니다.

답변

2

우선 REST는 엄격한 가이드 라인이 아니므로 이에 대한 명확한 답변은 없지만 다른 URL을 리소스로 보는 데 도움이 될 것이라고 생각합니다. (결국 REST는 무엇에 관한 것입니까?).

서버에 DELETE 요청을 보내면 해당 위치에서 리소스를 삭제하라는 메시지가 표시됩니다. 위 예제에서 컬렉션의 내용을 삭제한다고 가정하고 있지만 실제로 서버에 컬렉션 자체를 삭제하도록 지시하고 있습니다. 따라서 GET 요청을 즉시 내 보낸 경우 빈 콜렉션이 포함 된 200 개의 응답 대신 204 (No Content) 응답을받을 것으로 예상됩니다. 적합하다면 문제가 해결됩니다.

제 의견으로는 PUT 요청의 반대 인 개별 컨텍스트/작업에 대한 DELETE 요청을 사용하는 것이 좋습니다. 지정된 내용을 삭제하는 명령이 포함 된 POST 요청을 발행하여 콜렉션을 수정하는 것이 더 정확합니다.

는 이러한 방법으로

mycorp/API가/V1/

를 컨텍스트에 게시하고 모든 고아를 삭제하기 위해 서버를 지시하는 명령을 보낼 수 있습니다.

내가 선호하는 이유는 컨텍스트 경로를 일부 항목이 고아가 될 수도있는 고유 한 모음으로 간주하기 때문입니다.

일반적으로 의심스러운 경우 POST는 HTTP의 조커이기 때문에 친구입니다.

+0

의미가 있습니다. 삭제는 리소스가 x = y 인 리소스의 엔티티가 아닌 전체 리소스를 의미해야한다는 사실에 대해 생각하지 않았습니다. – deanvmc

관련 문제