使用java jersey,我的方法处理程序中有以下@ QueryParam:
@Path("/hello")
handleTestRequest(@QueryParam String name, @QueryParam Integer age)
我知道如果我这样做: http://myaddress/hello?name=something
它会进入那种方法......
我想这样打电话:
它也将采用相同的方法。有什么方法可以标记"可选" PathParam?它也适用于@FormParam吗?或者我是否需要使用不同的方法签名创建单独的方法?
答案 0 :(得分:16)
在JAX-RS中,参数不是必需参数,因此如果您不提供年龄值,它将为NULL
,您的方法仍将被调用。
如果不存在,您还可以使用@DefaultValue
提供默认年龄值。
@PathParam
参数和其他基于参数的注释@MatrixParam
,@HeaderParam
,@CookieParam
和@FormParam
遵守与{{1}相同的规则}}。
答案 1 :(得分:9)
您应该能够在<div class="output"></div>
参数中添加@DefaultValue
注释,这样如果未提供age
,则会使用默认值。
age
根据Javadocs for @DefaultValue
,它应该适用于所有* Param注释。
定义使用以下注释之一绑定的请求元数据的默认值:PathParam,QueryParam,MatrixParam,CookieParam,FormParam或HeaderParam。如果请求中不存在相应的元数据,则使用默认值。
答案 2 :(得分:2)
您始终可以将返回类型换行为可选,例如:@QueryParam("from") Optional<String> from