유효한 HTTP 요청을 만들 수 있지만 HTTP 설계와 반대가됩니다. 나는 정확한 HTTP 디자인에 대한 나의 대답에 초점을 맞추고있다.
먼저 GET 요청을하면 항상 리소스 표현이 수신됩니다. URL이 '리소스 모음'과 같은 것을 나타내더라도 HTTP에 엄격한 정의가 없습니다. 이 리소스 목록은 데이터 모델에서 오는 여러 '엔터티'를 여전히 나타낼 수 있습니다.
따라서 /users
을 호출하면 여러 사용자 엔터티를 반환 할 수 있습니다.
마찬가지로 사용자에게 DELETE
은 전체 /users
컬렉션과 그 안에있는 모든 항목을 삭제할 수 있음을 의미합니다.
내가보기에 좋은 대답이없는 한 가지 문제점은 여러 리소스를 삭제하기 위해 쿼리 문자열을 사용하고 있다는 것입니다. 나는 이것이 GET
/HEAD
에 대해 좋다고 생각하지만, DELETE
에 대해서도 정확한지 질문한다. 내가 DELETE
의 /users?foo=bar
에 /users
을 삭제해야한다고 생각하고 일반적으로 대부분의 프레임 워크가 작동하는 방식 때문일 것입니다. 그럴까요? 나는 실제로 확신하지 못한다. REST는 엄격히 표준이 아니므로 거기에서 해답을 찾을 수는 없으므로 잘못된 결과가 발생합니다. 엄격한 HTTP 관점에서 엄격하게 REST를 요구하지 않는다는 것을 알고 있습니다. 확실히 괜찮습니다. 이 같은
/users?id[]=12&id[]=4&id[]=65
대신 뭔가 :
그러나, 당신은처럼하지 URL을 구조 할 수
/users/12,4,65
나는 본 적이 다른 사람이 작업을 수행하고, 조금 덜 느낀다 나에게 잘못된. 그러나 이것은 대부분 추측입니다.
이와 같이 여러 엔터티에서 DELETE
을 수행하는 경우에도 요청은 성공하거나 전혀 수행하지 않아야합니다. 부분적인 성공은 받아 들여지지 않으므로, 일반적인 200/204 응답 코드를 사용하여 성공적인 삭제를 나타낼 수 있습니다.
귀사의 요청에 따라 어떤 응답 유형이 반환되는지, 그리고 어떻게해야할까요? –
글쎄, 분명히 하나의 단일 호출을 사용하여 여러 엔터티를 얻을 수 있습니다. – cottton