52.2.3. 获取 URI 模板变量的值
概述
如 “设置路径”一节 所述,资源路径可以包含动态绑定到值的变量片段。通常,这些变量路径片段作为资源方法的参数使用,如 “从 URI 的路径获取数据”一节 所述。但是,您也可以通过 URI 上下文访问它们。
获取路径参数的方法
UriInfo 接口提供了两种方法,在 例 52.1 “从 URI 上下文返回路径参数的方法” 中显示,它会返回一个路径参数列表。
例 52.1. 从 URI 上下文返回路径参数的方法
MultivaluedMap<java.lang.String, java.lang.String>
;getPathParameters
MultivaluedMap<java.lang.String, java.lang.String>
;getPathParameters
boolean
decode
没有利用任何参数的 getPathParameters()
方法会自动解码路径参数。如果要禁用 URI 解码,请使用 getPathParameters(false)
。
值以模板标识符作为键存储在映射中。例如,如果资源的 URI 模板为 /{color}/box/{note},则返回的映射有两个条目,其键为 color
和 note
。
示例
例 52.2 “从 URI 上下文中提取路径参数” 显示使用 URI 上下文检索路径参数的代码。
例 52.2. 从 URI 上下文中提取路径参数
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"); } }