Wenn Sie einen REST-Service mit der Einschränkung HATEOAS erstellen , ist es sehr einfach, das Vorhandensein von Ressourcen durch Verknüpfen anzukündigen . Sie erstellen einen GET
Eintrag im Stammverzeichnis meiner Website und ich antworte mit dem Stammdokument, in dem alle Ressourcen der ersten Ebene aufgeführt sind:
{
users: { href: "/users" }
questions { href: "/questions" }
}
Clients, die verstehen, wie diese href
Werte gelesen werden, können GET
Anforderungen an diese ausführen und alle aktuellen in der Anwendung verfügbaren Ressourcen ermitteln.
Dies funktioniert gut für grundlegende Suchszenarien, gibt jedoch nicht an, ob eine Ressource abfragbar ist. Zum Beispiel kann es sinnvoll sein, Folgendes auszuführen:
GET /users?surname=Smith
Gibt es Formate, die diese Abfragefähigkeit mit genügend Informationen ausdrücken können, damit ein Client eine kohärente Abfrage erstellen kann, ohne dass er zuvor über die Ressource informiert ist?
Darüber hinaus gibt es eine Möglichkeit auszudrücken, dass ein Client einen POST
an einem bestimmten Ort mit einem erwarteten Ort ausführen darf . Beispielsweise kann erwartet werden, dass ein Client Folgendes ausführt, um eine neue Fragenressource zu erstellen:
POST /questions
{
title: "Are there strategies for discovering REST services using HATEOAS?",
body: "When building a REST service with the HATEOAS constraint, it's very..."
}
Wenn wir HTML als Format für den menschlichen Gebrauch verwenden, können wir viel davon durch die Verwendung von Formularen und schriftlichen Eingabeaufforderungen ausdrücken, damit ein Mensch die Vorgänge erkennen kann, die er für einen Dienst ausführen darf.
Gibt es Formate, die für Kunden ähnliche Funktionen bieten?
Antworten:
Wie würden Sie wissen, welche Eingaben akzeptabel sind? Das heißt, wenn Ihr Kunde keine Vorkenntnisse hat, wie würden Sie die Semantik von "Nachname" definieren? Du fängst an, in das Gebiet zu gelangen, in dem du so etwas wie Eule brauchst .
Ich denke, es ist praktischer zu erwarten, dass Ihre Kunden die Semantik bekannter Mimetypen verstehen. Sagen Sie zum Beispiel "text / vcard" für Personen.
quelle
application/atomapp+xml
um sie zu verwenden, und sie allen Kunden zur Verfügung stellen, die dieses Format bereits verstehen. Es gibt wahrscheinlich genug bekannte Inhaltstypen, um dies zu einer praktischen Lösung zu machen.Sie können Details zu Ihren Diensten über eine "WADL" veröffentlichen.
http://en.wikipedia.org/wiki/Web_Application_Description_Language
Es ist optional und nicht jedes Backend-REST-Technos unterstützt dies. Jersey, die "offizielle" Java-Implementierung von jax-rs, unterstützt dies beispielsweise - es kann automatisch für Sie generiert werden.
Es ist jedoch ziemlich selten, dass es gebraucht wird.
Ich kenne keine großen, die es benutzen. Im Allgemeinen haben Sie eine Webseite, die die API beschreibt.
quelle
Der Frühling hat dafür etwas Unterstützung, ebenso wie die Ruhe.
quelle