Sollte ein REST-service über eine XSD für XML-Antworten?
Wir haben ein REST-service, der je nach accept-header zurück, XML oder JSON an den client, oder je nach content-type-header akzeptieren, XML oder JSON.
Nun eine aktuelle integrator fragte uns, ob wir ein XSD-schema für die XML-Antworten und Anfragen.
Ist dies eine gängige Praxis bei der Entwicklung von REST-services?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es absolut gängige Praxis, Aufrufer des service, einschließlich der REST, mit irgendeiner form der definition der Schnittstelle für diesen Dienst. Wenn Sie über eine XML-Schnittstelle, XML-schema-von einer Art (XSD, RELAX NG, Schematron, etc) ist eine feine Art zu definieren, die Anfrage und Antwort - Schnittstelle. Neben der Bereitstellung der Dokumentation, es kann verwendet werden, durch die überprüfung der Parser zu fangen, Verstöße gegen die deklarierten interface.
Könnten Sie auch erwägen, JSON-Schema Definitionen Ihrer JSON-Schnittstelle. Es bietet einige der gleichen Vorteile wie ein XML-schema würde, aber es ist wohl weniger "gängige Praxis" als XML-schemas für XML.
Den vorherigen Antworten richtig sind, dass dies gemeinsamen Praxis.
Allerdings empfehle ich, die ist nicht gute Praxis.
Die schlechte Sache über die Verwendung eines xsd zum validieren einer Reaktion, ist die enge Bindung, die Sie zwischen dem client und dem server. Im Idealfall würde ein Kunde Folgen der tolerante Leser-Muster (siehe, zB, http://martinfowler.com/bliki/TolerantReader.html). Sollte der client benötigt nur die Daten, die es braucht, und nicht scheitern unnötig. Also, wenn der server zu starten, sendet zusätzliche Daten, oder nicht, senden Sie nicht mehr benötigte Daten, die der client sollte in der Lage sein, um fortzufahren, ohne zu Klagen. Die client-domain-Modell repräsentieren sollten nur die Daten, die der Kunde tatsächlich benötigt.
Zurück in den alten Tagen der SEIFE, diese enge Bindung zwischen client und server akzeptiert wurde als ok, oder sogar gut, und durchgesetzt werden die wsdl-und xsd. REST-Architekturen fördern sollte lose Kopplung statt, und es Diensten ermöglicht, sich zu entwickeln mit so wenig Auswirkungen wie möglich.
Mit der xsd-Datei zur Validierung eine Antwort ist gut, nur in seltenen Fällen. Zum Beispiel, wenn der service wird sich auch nie ändern (es könnte ein Wegwerf-Dienst zu tun, wenn-aus-Daten-migration), oder wenn Sie denken, es ist ok, um die client-und server-Domäne-Modelle fest gebunden ist (ich denke, das ist ok für unit-tests). Ein argument könnte gemacht werden, die für die Veröffentlichung der xsd-wenn ein Dienst ist stabil, aber ich denke, dass dies eine sehr schwere Entscheidung.
(und das obwohl diese immer noch gängige Praxis, ich finde, dass es nicht so verbreitet wie es war. Ich war im Gespräch mit einer Architektin bei einer großen Regierungsbehörde Letzte Woche, und Ihr standard ist nur xpath verwenden, um Daten aus xml-Antworten, und verwenden Sie niemals domain-Objekten auf Basis einer xsd)
Warum nicht? Wenn Sie die Kommunikation via XML, dann können Sie
schemaLocation
Attribut geben Sie Ihre URL-schema. Ansonsten, wie client können überprüfen der server-XML und bildet seine eigenen Anforderungen richtig?