Java Reference
In-Depth Information
Der Begriff REST (engl. Re presentational S tate T ransfer) stammt von Roy Fielding aus
dem Jahr 2000 [Fie00]. In dieser Publikation schlug Roy Fielding vor, das hauptsäch-
lich für die Übertragung von Webseiten eingesetzte HTTP (Hyper Text Transfer Pro-
tocol) für den Aufbau einer servicebasierten Architektur zu nutzen.
Der Java-Standard JAX-RS bietet Unterstützung beim Umsetzen von REST-Diensten
in Java. Im Unterschied zu dem bereits oben vorgestellten JAX-WS handelt es sich bei
JAX-RS aber nicht um Web Services auf Basis von XML bzw. SOAP sondern um Web
Services, die direkt auf HTTP aufsetzen. Eine Referenzimplementierung ist als Open-
Source-Projekt unter dem Namen Jersey 108 zu finden.
HTTP stellt verschiedene Anfragemethoden zur Verfügung. In einem Browser wird bei-
spielsweise beim Aufruf einer Webseite die Methode HTTP-GET verwendet. Im Rah-
men von REST werden den folgenden Anfragemethoden bestimmte Verwendungs-
zwecke zugeordnet:
x GET: Eine Ressource wird vom Server angefordert bzw. gelesen.
x POST: Eine neue Ressource wird auf dem Server erstellt.
x PUT: Eine auf dem Server vorhandene Ressource wird aktualisiert.
x DELETE: Eine auf dem Server vorhandene Ressource wird gelöscht.
Eine Ressource ist eine adressierbare Information, z. B. ein Benutzerkonto.
Die folgende Klasse zeigt einen Serviceanbieter, der mit JAX-RS implementiert wurde.
Durch die Annotation @Path wird der Basispfad des Serviceanbieters definiert. Für
jede angebotene Methode kann dann die gewünschte HTTP-Anfragemethode (hier
@GET ) und die Adresse mit der Annotation @Path festgelegt werden (hier methodeA
und methodeB ). Im Beispiel erhält die Methode methodeA() einen Übergabeparame-
ter mit dem Namen nachricht , der beim Aufruf über HTTP-GET gesetzt werden
kann. Die Annotation @Consumes beschreibt die Codierung, die die Methode im über-
gebenen Argument erwartet (hier MediaType.TEXT_PLAIN ). Die Annotation @Pro-
duces beschreibt die Codierung der Daten, welche die Methode zurückgibt. Hier die
Klasse ServiceanbieterImpl mit den JAX-RS Annotationen 109 :
// Datei: Serviceanbieter.java
@Path ( "Serviceanbieter" )
public class ServiceanbieterImpl {
@GET
@Path ("methodeA/{Nachricht}" )
@Consumes (MediaType.TEXT_PLAIN)
public Response methodeA (@PathParam("Nachricht") String nachricht) {
System.out.println (
"Serviceanbieter: Methode A wurde aufgerufen");
System.out.println ("Parameter: " + nachricht);
return Response.ok().build();
}
108 Die Webseite des Projekts ist: http://jersey.java.net.
109 In diesem Programmbeispielen wurde aus Gründen der Übersichtlichkeit auf die benötigten "import"-
Anweisungen verzichtet. Der vollständige Quellcode ist über den begleitenden Webauftritt zugäng-
lich.
Search WWH ::




Custom Search