URI-Muster für Ressourcen in RESTful-Anwendungen definieren
RESTful-Services (Representational State Transfer) basieren auf der Bearbeitung von Ressourcen. Ressourcen für RESTful-Services sind adressierbar, und URLs sind der primäre Weg, die Adressierbarkeit in REST zu realisieren.
Vorbereitende Schritte
Bestimmen Sie die Ressourcen in der Anwendung, die Sie als RESTful-Service bereitstellen möchten.
Informationen zu diesem Vorgang
URLs werden verwendet, um die Position einer Ressource anzugeben. Die Interaktion zwischen Server und Client basiert darauf, dass HTTP-Operationen an URLs abgesetzt werden. Da URLs oft eine lange Lebensdauer haben, ist es wichtig, URL-Mustern zu definieren, damit Clients direkt auf eine Ressource zugreifen können, lange, nachdem die Ressource lokalisiert wurde.
URLs werden normalerweise verwendet, wenn Sie Adressen in Web-Browser eingeben, wie z. B. http://www.ibm.com/ oder http://www.example.com/bookstore/books/ISBN123. Zwar müssen URLs von Benutzern nicht verstanden werden, doch RESTful-Services, die logische URLs in verständlichen Mustern bereitstellen, ermöglichen Entwicklern von Clientanwendungen, effizient zu arbeiten.
RESTful-Clients verwenden URLs, um Ressourcen zu bearbeiten. Jede Ressource muss ihren eigenen eindeutigen URL haben. Einige URL-Muster haben einen Sammlungspfad, dem eine eindeutige Kennung angehängt ist. Beispielsweise können Sie http://www.example.com/bookstore/books als Sammlungsressourcen-URL und http://www.example.com/bookstore/books/ISBN123 als eindeutigen Buchressourcen-URL verwenden. http://www.example.com/bookstore/books/ISBN123/authors können Sie verwenden, um eine Sammlungsressource abzurufen, die Autoren für ISBN123 beschreibt.
Der Anwendungsentwickler muss die Granularität von URLs genau berücksichtigen, da dies die Anwendungsnutzung und die Leistung beeinflussen kann. Beispielsweise können Sie die Informationen zum Autor eines Buchs als Teil der Buchressource angeben oder als eigenständige Ressource mit eigenem URL definieren, der in der Buchressource angegeben ist. Wenn der Autor noch andere Bücher verfasst hat, kann es sinnvoller sein, eine eigenständige Ressource für die Informationen zum Autor zu definieren und in einem Hyperlink der Buchressource auf sie zu verweisen.
Nachdem ein Anfangs-URL an einen Client gesendet wurde, können zugehörige Anforderungen durch Syntaxanalyse der aktuellen Ressource ermittelt werden. Im Beispiel mit dem Buch wird eine GET-Anforderung an http://www.example.com/bookstore/books/ abgesetzt, die eine Liste mit Buch-URLs einschließlich http://www.example.com/bookstore/books/ISBN123 abruft.
Da Systeme auf verfügbaren Ressourcen basieren, sind URLs im Allgemeinen langlebig. HTTP hat integrierte Statuscodes für Umadressierung, wie z. B. "301" (Dauerhaft entfernt) und "307" (Vorübergehend umgeleitet), daher verwenden Benutzer und Clients mit Caches zuvor ermittelte URLs zuerst. Sie können außerdem in Erwägung ziehen, eine Versions-ID in das URL-Muster aufzunehmen, z. B. http://www.example.com/bookstore/v2/books/ISBN123. Die Planung umfasst die Definition einer Schnittstelle mit Java™-Code. Daher sollten Sie Ihre URL-Muster aufgrund der zu erwartenden Langlebigkeit sorgfältig auswählen.
In JAX-RS (Java API for RESTful Web Services) müssen Sie @Path-Annotationen zu den Java-Klassendateien oder den Java-Methoden hinzufügen, um den relativen URL der Ressource zu definieren. Sie können JAX-RS-Unterressourcen-Locator und Unterressourcenmethoden verwenden, um Ressourcen zu definieren. Verwenden Sie Parameter, z. B. Pfadparameter oder Matrixparameter, im URL, um die Ressource zu identifizieren.
Der Wert in der @Path-Annotation definiert den relativen Teil des vollständigen URL für Ihre Ressource. Der Basis-URL wird von der Domäne, dem Port, dem Kontextstammverzeichnis des Anwendungsmoduls und allen Zuordnungen von URL-Mustern in der Datei "web.xml" für das Anwendungsmodul abgeleitet. Wenn die Domäne beispielsweise www.example.com ist, ist der Port 9060, das Kontextstammverzeichnis example, das URL-Muster des Servlets store/* und der Wert der @Path-Annotation /bookstore/books. Der vollständige URL lautet wie folgt: http://www.example.com:9060/example/store/bookstore/books.
Vorgehensweise
Ergebnisse
Sie haben einen URL erstellt, um Ihre Ressourcen für Ihren RESTful-Service anzugeben. Wenn Sie in einem frühen Entwurfsstadium Problemstellungen im Zusammenhang mit URL-Mustern berücksichtigen, verbessern Sie damit die Benutzerfreundlichkeit des RESTful-Service und erhöhen langfristig seinen Nutzen.
Nächste Schritte
Die vom definierten URL angegebene Ressource existiert. Die Ressource hat jedoch keine Methoden, mit denen Aktionen für HTTP-Methoden, wie z. B. GET, POST, PUT oder DELETE, ausgeführt werden können. Näheres zur Definition von Ressourcenfunktionen mit unterstützten HTTP-Methoden finden Sie in dem Artikel, der sich mit der Definition von Ressourcenmethoden für RESTful-Anwendungen befasst.