2016-07-28 8 views
0

제목이 말한대로 - 유효합니까? 내가 가진 엔드 포인트를 호출 할 경우Http 한 번에 여러 엔티티 요청을 가져오고 삭제하십시오 (PHP)

는 내가 그 다음

http://some.thing/more?id[]=12&id[]=4&id[]=65

한 번에 서버 반환 여러 기관을 수 있도록 할 유효 을 GET

을 무엇을 의미합니까?

rfc 문서에 대한 메모를 볼 수 없습니다. 또한 반환 할 상태 코드를 보면 - 그렇게 구축되지 않은 것처럼 보입니다.

그래서 GET 또는 DELETE 또는 HEAD 요청은 하나의 엔티티에만 해당되는 것 같습니까?

편집 : 언어는 PHP BTW

EDIT2이다 : 나는 몸을 사용하려는 해달라고 https://stackoverflow.com/a/18141127/3411766

를이 내가 피하고 싶은 것입니다.

+0

귀사의 요청에 따라 어떤 응답 유형이 반환되는지, 그리고 어떻게해야할까요? –

+0

글쎄, 분명히 하나의 단일 호출을 사용하여 여러 엔터티를 얻을 수 있습니다. – cottton

답변

1

유효한 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 응답 코드를 사용하여 성공적인 삭제를 나타낼 수 있습니다.