2012-05-24 5 views
7

예를 들어 항목을 가져 오기 위해 GET을 호출하면 DELETE로 항목을 삭제하고 다시 가져옵니다. 두 번째 GET은 어떻게 작동합니까?REST에서 부실 데이터를 처리하는 방법은 무엇입니까?

REST 원칙을 올바르게 따르면 GET이 캐시 될 수 있기 때문에 올바른 방법은 무엇입니까? REST에서 부실 데이터를 처리하는 방법은 무엇입니까?

+0

방금 ​​항목을 삭제 한 경우 왜 다시 "얻으려고"하시겠습니까? 그것은 존재하지 않을 것입니다. 어쩌면 내가 뭔가를 놓쳤거나 질문이 명확하지 않을 수 있습니다. –

+0

@Brent Pabst : UI 응용 프로그램에서 예를 들어 팝업에서 삭제가 발생하지만 GET 링크가 오프너 페이지에 있고 업데이트되거나 메일로 전송되지 않고 사용자가 브라우저 주소 표시 줄에 직접 삽입하는 경우 삭제 등이 캐시에 적용됩니다! 그 아이디어는 아이템이 더 이상 존재하지 않는다면 GET이 어떻게 작동해야하는지입니다. 모든 캐시를 비활성화 하시겠습니까? 캐시가 있으면 괜찮습니까? 이 모든 것에 대해 REST 접근 방식은 무엇입니까? – JohnDoDo

+2

두 번째 GET은 자연스럽게 HTTP 코드 '404 Not Found'를 반환합니다. 캐싱은 또 다른 문제인데, 나는 그것이 "불확실하다"는 놀라운 대답을 제공 할 것이다. 그러나 두 번째 GET이있는 경우 404를 생성한다는 것이 확실합니다. –

답변

4

우선 동작은 DELETE 호출이 응답 코드로 반환 한 값에 따라 달라집니다. DELETE 반환 200 - OK 또는 204 - No Content 다음 클라이언트가 다음 호출에 404 - Not Found을 얻어야한다

경우 얻을 수 있습니다. 202와 204는 리소스가 즉시 삭제되었음을 의미하기 때문입니다.

그러나 DELETE가 202 - Accepted을 반환하면 클라이언트가 나중에 일정 시간 동안 리소스를 성공적으로 얻을 수있는 기회가 있습니다. 202는 리소스가 삭제로 표시되었지만 반드시 즉시 정리되지는 않았기 때문입니다.

두 번째로 관련된 캐시가있는 경우 캐시가없는 경우 발생하는 것과 일관되도록 동작을 구성해야합니다. 성공적인 DELETE는 캐시 된 사본뿐 아니라 데이터의 진정한 출처에서 항상 제거해야합니다.

0

DELETE 다음에 나오는 GET은 캐싱에 관계없이 HTTP 404 오류를 생성해야합니다. 논리 코드는 영속 저장소와 메모리 내 저장소 또는 캐시에서 레코드를 제거 할만큼 똑똑해야합니다. 또한 UI는 사용자가 적절하다고 판단하는 흐름이나 프로세스에 상관없이 404의 결과를 처리 할 수 ​​있어야합니다.

관련 문제