Informationen zu URIs mit UriInfo-Objekten abrufen
Mit JAX-RS (Java™ API for RESTful Web Services) können Sie das UriInfo-Objekt verwenden, um auf Anforderungsheader zuzugreifen. Das UriInfo-Objekt stellt Methoden bereit, mit denen Sie URI-Informationen einer Anforderung lokalisieren oder erstellen können.
Informationen zu diesem Vorgang
Wenn Sie ein von der JAX-RS-Laufzeitumgebung eingefügtes UriInfo-Objekt verwenden, hat das den Vorteil, dass der relative und der absolute URI bekannt ist und geändert werden kann. Die Annotation "@javax.ws.rs.core.Context" zeigt an, dass ein Kontextobjekt eingefügt ist. Die Schnittstelle "javax.ws.rs.core.UriInfo" ist die Schnittstelle des Objekts, das Sie einfügen möchten. Sie können das UriInfo-Objekt verwenden, um absolute und relative URLs mit der UriBuilder-Klasse zu erstellen.
Vorgehensweise
Ergebnisse
Die Ressourcenmethode kann den URI verwenden und dann URI-Informationen mit dem UriInfo-Objekt erstellen.
Beispiel
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.MediaType;
@Path ( "/books" )
public class BookListResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getBookList() {
return "a list of books";
}
}
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.MediaType;
@Path ( "/allitems" )
public class AllItemsListResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getLocationOfAllItems(@Context UriInfo uriInfo) {
URI bookListURI = uriInfo.getBaseUriBuilder().path(BookListResource.class).build();
return Response.ok("The URI to the book list is: " + bookListURI..toASCIIString()).build();
}
}