52.2.3. 获取 URI 模板变量的值

概述

“设置路径”一节 所述,资源路径可以包含动态绑定到值的变量片段。通常,这些变量路径片段作为资源方法的参数使用,如 “从 URI 的路径获取数据”一节 所述。但是,您也可以通过 URI 上下文访问它们。

获取路径参数的方法

UriInfo 接口提供了两种方法,在 例 52.1 “从 URI 上下文返回路径参数的方法” 中显示,它会返回一个路径参数列表。

例 52.1. 从 URI 上下文返回路径参数的方法

MultivaluedMap<java.lang.String, java.lang.String&gt;getPathParametersMultivaluedMap<java.lang.String, java.lang.String&gt;getPathParametersbooleandecode

没有利用任何参数的 getPathParameters() 方法会自动解码路径参数。如果要禁用 URI 解码,请使用 getPathParameters(false)

值以模板标识符作为键存储在映射中。例如,如果资源的 URI 模板为 /{color}/box/{note},则返回的映射有两个条目,其键为 colornote

示例

例 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");
  }
}