将JAX-RS @PathParam映射到带注释的POJO构造函数

时间:2017-08-17 23:33:14

标签: jersey jax-rs path-parameter

我想创建一个端点,其中PathParam自动调用要注入的对象的构造函数,该构造函数具有String参数的构造函数。在代码中拼写出来:

这是资源

@GET
@Path("/{apiVersion}" + "/item")
public Response version(@PathParam("apiVersion") APIVersion apiVersion) {
    return Response.ok().build();
}

我希望在调用APIVersion构造函数时自动使用String。在APIVersion

public APIVersion(String apiVersion) {
   this.versionString = apiVersion;
}

是否可以只访问注释?我无权访问ResourceConfig

1 个答案:

答案 0 :(得分:3)

是的,这是可能的,没有除@PathParam之外的任何注释,因此您给出的示例应该按原样运行。见https://jersey.github.io/documentation/latest/jaxrs-resources.html#d0e2271(强调我的):

  

通常,方法参数的Java类型可以是:

     
      
  1. 是原始类型;

  2.   
  3. 拥有一个接受单个String参数的构造函数;

  4.   
  5. 使用名为valueOf的静态方法或接受单个的fromString   字符串参数(例如,参见Integer.valueOf(String)和   java.util.UUID.fromString(字符串));

  6.   
  7. 已注册实施   javax.ws.rs.ext.ParamConverterProvider JAX-RS扩展SPI   返回一个能够“from”的javax.ws.rs.ext.ParamConverter实例   字符串“转换为类型。或

  8.   
  9. Be List,Set或SortedSet,其中T满足上面的2或3。   生成的集合是只读的。

  10.