2008-08-28 19 views
4

Ich erstelle einen RESTful-Webdienst mit mehreren URIs für eine seiner Ressourcen, da mehrere eindeutige IDs vorhanden sind. Sollte der Server auf eine GET-Anforderung für einen alternativen URI antworten, indem er die Ressource zurückgibt, oder sollte ich eine HTTP 3xx-Umleitung an den kanonischen URI senden? Ist HTTP 303 (siehe auch) die am besten geeignete Umleitung?So reagieren Sie auf einen alternativen URI in einem REST-fähigen Webdienst

Erläuterung: Die HTTP-Spezifikation macht deutlich, dass die Wahl der Umleitung davon abhängt, welche URI zukünftige Anfragen verwenden sollen. In meiner Anwendung ist der "kanonische" URI die stabilste der Alternativen; Ein alternativer URI wird immer auf denselben kanonischen URI verweisen oder ungültig werden.

Antwort

4

Ich würde persönlich eher für die Rücksendung der Ressource anstatt faffing mit einer Weiterleitung, obwohl ich vermute, dass nur, weil meine subcoscious sagt mir Weiterleitungen sind langsamer.

Wenn Sie sich jedoch für eine Weiterleitung entscheiden würden, würde ich denken, dass eine 302 oder 307 geeigneter ist als eine 303, obwohl die w3.org Details zu den verschiedenen Umleitungscodes enthält, die Sie verwenden könnten.

+0

Einverstanden, es macht keinen Sinn, den Client unverblümt zu sagen, nur eine weitere Anfrage mit einem anderen URI zu machen. Geben Sie dem Client die Ressource, die Sie wissen, nach der er gefragt hat, und teilen Sie ihm mit, welchen URI er in Zukunft verwenden soll. – thecoshman

2

Unter W3C Architexture of the World Wide Web, Volume One, gibt es einen Abschnitt auf URI-Aliase (Section 2.3.1), die folgenden Zustände an:

„Wenn ein URI Alias ​​gemeinsame Währung nicht worden, der Besitzer URI sollten Protokolltechniken wie serverseitige Umleitungen verwenden Die Gemeinschaft profitiert, wenn der URI-Besitzer die Umleitung eines Alias-URI zum entsprechenden "offiziellen" URI unterstützt.Weitere Informationen zur Umleitung finden Sie in Abschnitt 10.3, Umleitung, in RFC2616. Siehe auch CHIPS für eine Diskussion einiger Best Practices für Serveradministratoren. "

Für was es wert ist, würde ich eine 302 Redirect empfehlen.

1

Die Antwort von Ubiguchi hatte, was ich brauchte, außer dass ich jetzt denke, eine Umleitung ist der Weg zu gehen, über den Link zu den HTTP 1.1 specifiction Abschnitt auf Response-Codes. Es stellt sich heraus, dass ich tatsächlich eine 301-Weiterleitung benötige, weil die URI, auf die ich umadressiere, "korrekter" und stabiler ist und daher für zukünftige Anfragen verwendet werden sollte.