Http Delete Multiple Items
- https://stackoverflow.com/a/21863914
- record 하나당 하나의 request
- RESTful한 방법이기는 하나, 제약이 따른다.
- URL param을 통해 id를 여러 개 전달 (E.g> "/records/1;2;3)
- 하지마라. 중개자(proxy와 같은) 입장에서는 /records/1;2;3;이라는 single record를 삭제한다는 의미로 해석한다.
그래서, /records/1, /records/2, /records/3 이 아닌 /records/1;2;3;의 캐시를 무효화한다. 요청한 데이터가 영구적으로 삭제되었음을 의미하는 상태 코드인 410를 /records/1;2;3;에 대해 프록시가 내려줄 수 있지만, 각각에 대해서는 그러지 못한다.
- 하지마라. 중개자(proxy와 같은) 입장에서는 /records/1;2;3;이라는 single record를 삭제한다는 의미로 해석한다.
- non-REST 방식으로, 삭제할 item의 id들을 포함하는 JSON을 전달
- best 방법, RESTfull하게 할 수 있다.
- 첫 번째 방법
- 'change request' resource를 생성(E.g> records=[1,2,3]을 body에 담아 /delete-requets로 POST 요청)하는 메서드를 만들고, 해당 request가 accepted 됐는지, reject(거부) 됐는지, in progress(진행중) 인지, competed(완료) 됐는지 polling을 통해 확인한다.
- 오래 걸리는 operation에 유용하다.
- 두 번째 방법
- body에 삭제할 리소스 리스트와 수행할 액션을 포함(format은 자유롭게)하여 /records에 PATCH 요청
- 짧게 걸리는 operation에 유용
- record 하나당 하나의 request
- https://stackoverflow.com/a/50979689
- Mozilla Storage Service SyncStorage API v1.5
- BSO는 basic storage object로, 해당 서비스의 storage 단위로 보임
- collections 전부를 삭제할 경우
DELETE https://<endpoint-url>/storage/<collection>
- single item 삭제할 경우
DELETE https://<endpoint-url>/storage/<collection>/<id>
- multiple items 삭제할 경우
DELETE https://<endpoint-url>/storage/<collection>?ids=<ids>
- Question
- /collection/ids=1,2,3으로 요청했는데, 3이 이미 존재하지 않는 경우 상태 코드를 어떻게 내려줘야 할까?
- Mozilla Storage Service SyncStorage API v1.5
- https://www.cikorea.net/bbs/view/etc_qna?idx=20840&lists_style=
- RESTful을 잠시 잊고 그냥 새로운 라우트를 정의
HTTP PATCH /board/drop?id=1,2,3,4,5,10
- RESTful을 잠시 잊고 그냥 새로운 라우트를 정의