2009-06-11 8 views
0

Ich entwickle einen REST-ful Webservice, und ich habe eine Frage über die HTTP PUT Methode.Alternative Körper für HTTP PUT

Ich möchte Menschen ermöglichen, Inhalte mit einem Antrag/Formulardatenanforderung Körper einzureichen. Die Standardantwort ist jedoch in application/xml.

Ist das akzeptabel?

Evert

Antwort

2

Inhaltstypen sind nur im Rahmen einer einzelnen Anfrage wichtig. Sie beschreiben lediglich das Format des gesendeten Inhalts.

Ihr Webdienst sollte die Antwort liefern, die für die Clientanforderung, die er bereitstellen kann, am annehmbarsten ist. Die Clientanforderung sollte einen Accept-Header enthalten, der die zulässigen Inhaltstypen beschreibt. Wenn Ihr Dienst keines der Inhaltstypen in diesem Header nicht zur Verfügung stellen kann dann zurück 406 Not Acceptable

In Ihrer Situation, wenn Ihre Kunden GET Anfragen application/xml in den Accept-Header enthalten, dann ist es in Ordnung mit application/xml, unabhängig von PUT zu reagieren Anfrage über die angeforderten Ressourcen.

EDIT:

Die status code definition für 406 Not Acceptable eine Note umfasst mit der folgenden:

Anmerkung: HTTP/1.1-Server erlaubt Antworten zurückgeben, die nicht akzeptabel gemäß den akzeptieren gesendet Headern in die Anfrage. In einigen Fällen kann dies sogar vorzuziehen sein, eine Antwort zu senden. Benutzeragenten werden aufgefordert, die Kopfzeilen von einer eingehenden Antwort zu überprüfen, um festzustellen, ob sie akzeptabel ist.

So können Sie application/xml wann immer Sie wollen zurückgeben.

0

RESTful Dienste sollten die korrekte HTTP-Methode (GET, HEAD, PUT, DELETE oder POST) für die Aktion verwenden, stellen Sie sicher, dass jede Scoping-Informationen in der URI enthalten ist, und stellen Sie sicher, dass die HTTP-Nachrichtenumschlag tut nicht einen anderen Umschlag enthalten, zB SOAP.

Roy Fieldings 2000 Ph.D. dissertation: Architectural Styles and the Design of Network-Based Software Architectures bildet die Grundlage von REST.

+0

Interessanter Artikel, aber es ist nicht meine Frage beantworten .. Beispiel: ich einen neuen Artikel PUT auf/Artikel Firstpost /, erhalte ich die Möglichkeit, einen Inhaltstyp entweder application/xml oder Anwendung zu verwenden /Formulardaten. Ich wähle das spätere. Dann mache ich einen GET auf den Artikel, und ich bekomme die Anwendung/XML-Darstellung .. Ist das in Ordnung? – Evert

+0

Entschuldige immer noch ziemlich neu zu REST selbst, aber wie ich es verstehe, hängt das wirklich davon ab, wie das XML vom Client konsumiert wird. Die Nachrichtenentität sollte in einem Datenformat vorliegen, das für den Client am besten geeignet ist und keine spezielle Syntaxanalyse für das Problem erfordert, da dies den Client und den Dienst miteinander verbindet. Hier ist ein Beitrag, der das mehr diskutiert; http://www.peej.co.uk/articles/rest-data-formats.html. Was waren Ihre Gründe dafür, dass application/xml nicht den REST-Prinzipien folgt? –