Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Dieser Inhalt ist in der von Ihnen ausgewählten Sprache nicht verfügbar.
51.2. Working with the full request URI
Abstract
UriInfo
object. The UriInfo
interface provides functions for decomposing the URI in a number of ways. It can also provide the URI as a UriBuilder
object that allows you to construct URIs to return to clients.
51.2.1. Injecting the URI information
Overview
UriInfo
object is decorated with the @Context
annotation, the URI context for the current request is injected into the UriInfo
object.
Example
Example 51.1. Injecting the URI context into a class field
import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.Path; ... @Path("/monstersforhire/") public class MonsterService { @Context UriInfo requestURI; ... }
51.2.2. Working with the URI
Overview
UriInfo
interface provides methods for accessing the parts of the URI:
- the base URI
- the resource path
- the full URI
Getting the Base URI
@Path
annotations. For example if a service implementing the resource defined in Example 46.5, “Disabling URI decoding” were published to http://fusesource.org and a request was made on http://fusesource.org/montersforhire/nightstalker?12 the base URI would be http://fusesource.org.
Getting the path
rootPath
— /monstersforhire/getterPath
— /mostersforhire/nightstalkerTheGET
request was made on /monstersforhire/nightstalker.putterPath
— /mostersforhire/911ThePUT
request was made on /monstersforhire/911.
Example 51.2. Getting a resource's path
@Path("/monstersforhire/") public class MonsterService { @Context UriInfo rootUri; ... @GET public List<Monster> getMonsters(@Context UriInfo getUri) { String rootPath = rootUri.getPath(); ... } @GET @Path("/{type}") public Monster getMonster(@PathParam("type") String type, @Context UriInfo getUri) { String getterPath = getUri.getPath(); ... } @PUT @Path("/{id}") public void addMonster(@Encoded @PathParam("type") String type, @Context UriInfo putUri) { String putterPath = putUri.getPath(); ... } ... }
Getting the full request URI
getRequestUri()
methods would return http://fusesource.org/montersforhire/nightstalker?12. The getAbsolutePath()
method would return http://fusesource.org/montersforhire/nightstalker.
51.2.3. Getting the value of URI template variables
Overview
Methods for getting the path parameters
UriInfo
interface provides two methods, shown in Example 51.3, “Methods for returning path parameters from the URI context”, that return a list of the path parameters.
Example 51.3. Methods for returning path parameters from the URI context
MultivaluedMap<java.lang.String, java.lang.String> getPathParameters();
MultivaluedMap<java.lang.String, java.lang.String> getPathParameters(boolean decode);
getPathParameters()
method that does not take any parameters automatically decodes the path parameters. If you want to disable URI decoding use getPathParameters(false)
.
color
and note
.
Example
Example 51.4. Extracting path parameters from the URI context
import javax.ws.rs.Path; import javax.ws.rs.Get; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.MultivaluedMap; @Path("/monstersforhire/") public class MonsterService @GET @Path("/{type}/{size}") public Monster getMonster(@Context UriInfo uri) { MultivaluedMap paramMap = uri.getPathParameters(); String type = paramMap.getFirst("type"); String size = paramMap.getFirst("size"); } }