2008-09-08 7 views
4

저는 사용자가 json, xml, csv와 같은 다른 형식을 사용하여 HTTP PUT으로 새 항목을 만들 수 있도록 REST 데이터 서비스를 제공합니다. 나는 가장 URL의 형식 사양을 처리하는 방법을 확실 해요 :REST 리소스에 넣을 때 쿼리 매개 변수를 처리하는 방법은 무엇입니까?

PUT /ressource/ID/json 
PUT /ressource/ID/xml 

또는

PUT /ressource/ID?format=json 
PUT /ressource/ID?format=xml 

그래서 형식 표시를 지정하는 가장 좋은 방법은 무엇입니까?

쿼리 매개 변수로 형식을 지정하고 PUT을 수행하려면 어떻게해야합니까?

curl -T test/data.json -d "format=json" http://localhost:5000/resource/33 

이 작동하지 않습니다.

curl -T test/data.json http://localhost:5000/update?format=json 

작동하지만 차라리 혼자를 추가하는 대신 쿼리 매개 변수를 구축 곱슬 곱슬 할 것입니다.

+0

* 새 * 리소스를 만들 때 대신 "POST"를 사용해야합니다. 'PUT'은 클라이언트가 URI를 알고있는 고정 된 위치에서 리소스를 대체하는 것에 관한 것입니다. 클라이언트가 URI를 사용하여 리소스를 저장하는 데 사용할 수 있다고 말하는 것은 매우 어려워 보입니다. 'POST'는 사용자가'/ resource'과 같은 URI를 사용할 것이고 서버는'/ resource/666'처럼 새로운 'thing'에 접근 할 수있는 URI로 응답 할 것입니다. – thecoshman

답변

15

RESTful 웹 서비스의 일반적인 원칙은 해당되는 경우 HTTP에 내장 된 기능을 사용하는 것입니다. 이 경우 Content-Type 헤더를 application/json 또는 application/xml으로 설정하여 PUT 요청 콘텐츠의 형식을 지정할 수 있습니다.

+0

좋은 생각 : D. 기록을 위해, 나는 당신의 해결책이 나의 것보다 낫다. –

+0

감사합니다. 그게 제가 찾고 있던 해결책입니다. 그리고 컬을 사용하면 쉽고 깨끗하게 정리할 수 있습니다. –

+3

이 API를 공개 API로 만들려면 많은 사람들이 Content-Type 헤더를 사용할 수 없습니다. 슬픈 현실은 표준화 된 방식을 허용하더라도 일반적으로 해킹을 허용해야한다는 것입니다. – aehlke

관련 문제