Java @DefaultValue与RESTful框架中的@PathParameter不兼容
我需要一个Java @DefaultValue与RESTful框架中的@PathParameter不兼容,java,rest,Java,Rest,我需要一个@PathParameter的默认值 这就是我的代码的样子: @GET @Path("/family/{member}") public Response responseMsg( @DefaultValue("Father") @PathParam("member") String pathParameter) {} 编译器不会显示任何错误,当然应用程序也不会像我预期的那样运行 因为uri“/family/null”将不匹配路径“/family/{memb
@PathParameter
的默认值
这就是我的代码的样子:
@GET
@Path("/family/{member}")
public Response responseMsg( @DefaultValue("Father") @PathParam("member") String pathParameter) {}
编译器不会显示任何错误,当然应用程序也不会像我预期的那样运行
因为uri“/family/null
”将不匹配路径“/family/{member}
”而是“/family/
”
我可以知道是否有任何方法为@PathParam
指定默认值,以及如何指定吗?
另外,我想知道
@DefaultValue
是否仅与@QueryParameter
兼容?我认为这里的最佳实践是将使用@Path(“/family/”)注释的方法重定向到使用所需默认值显示的方法:
@GET
@Path("/family")
public Response redirectingMethod() {
return responseMsg("Father");
}
根据定义,URI应该是唯一的——默认值将与此范例相矛盾,因为在省略URI的某些部分并用隐式默认值替换它们时,您无法清楚地说出哪些资源回答了哪个URI。感谢Smutje指出,根据定义,URI应该是,Unique但是java doc for jax rs还提到:它可以定义使用以下注释之一绑定的请求元数据的默认值:PathParam、QueryParam、MatrixParam、CookieParam、FormParam或HeaderParam。如果请求中不存在相应的元数据,则使用默认值。看,Javadoc就是这样的。请参阅,但JAX-RS 1.1规范(来自JCP附录A)是正确的:“DefaultValue:为使用QueryParam、MatrixParam、CookieParam、FormParam或HeaderParam注释的字段、属性或方法参数指定默认值。如果相应的查询或矩阵参数不在请求URI中,如果相应的表单参数不在请求实体体中,或者如果相应的HTTP头不包括在请求中,则将使用指定的值。但是,路径(“/family”)也用于指向其他资源,让我们说一下全家人名单。好的。因此,如果不更改应用程序中的URL方案,就我所知,您的问题没有解决方案