Inhaltsvereinbarung auf der Basis von Anforderungsparametern implementieren
REST-Anwendungen (Representational State Transfer) können verschiedene Ressourcendarstellungen zurückgeben. Sie können die Inhaltsvereinbarung auf der Basis von Anforderungsparametern verwenden, um das Inhaltsformat für den Datenaustausch zwischen Servern und Clients zu bestimmen.
Informationen zu diesem Vorgang
Ressourcen können Daten in verschiedenen Formaten darstellen. Sie können die Inhaltsvereinbarung auf der Basis von URLs, Anforderungsparametern oder HTTP-Headern implementieren. Diese Task beschreibt die Inhaltsvereinbarung auf der Basis von Anforderungsparametern für das Empfangen verschiedener Datenformate.
Sie können Anforderungsparameter, z. B. Abfrageparameter, verwenden, um den Inhaltstyp anzugeben, den der Server zurückgeben soll. Wenn der Parameterwert z. B. xml ist, wird erwartet, dass der Server XML-Inhalt zurückgibt. Entsprechend wird erwartet, dass der Server JSON-Inhalt zurückgibt, wenn der Parameterwert json ist.
Die Verwendung von Anforderungsparametern reduziert die Anzahl der URLs im Vergleich zur Implementierung der Inhaltsvereinbarung auf der Basis von URL-Mustern. Diese Methode setzt jedoch voraus, dass ein Parameter in der Implementierung der Ressourcenmethode genutzt und syntaktisch analysiert wird.
Vorgehensweise
Im folgenden Beispiel sind die Datenformate XML und JSON gültig, und das Format wird von einem Abfrageparameter angegeben. Standardmäßig wird XML zurückgegeben. Die Anforderung /resources/resource?format=json bewirkt, dass der Server JSON-Format vom Server zurückgegeben wird. Beispiel:
@Path("/resources")
public class Resource
{
@Path("{resourceID}")
@GET
public Response getResource(@PathParam("resourceID") String resourceID, @QueryParam("format") String format)
{
if (format == null || "xml".equals(format)) {
return Response.ok(/* entity in XML format */).type(MediaType.APPLICATION_XML).build();
} else if ("json".equals(format)) {
return Response.ok(/* entity in JSON format */).type(MediaType.APPLICATION_JSON).build();
}
return Response.notAcceptable(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_JSON_TYPE).add().build()).build();
}
}
Ergebnisse
Sie haben die Inhaltsvereinbarung auf der Basis von Parametern implementiert, um die Formate der Ressourcen für die Datendarstellung festzulegen.