Java Jax-RS中的可选@PathParam
我有一个服务,其中路径的最后一部分是可选的,用户可以输入/mypath/和/mypath/param1/ 我尝试使用正则表达式筛选路径的最后一部分:Java Jax-RS中的可选@PathParam,java,regex,jboss,jax-rs,resteasy,Java,Regex,Jboss,Jax Rs,Resteasy,我有一个服务,其中路径的最后一部分是可选的,用户可以输入/mypath/和/mypath/param1/ 我尝试使用正则表达式筛选路径的最后一部分: @Path(/mypath{param1:(/param1)?}”) 我使用RestEasy作为我的JAX-RS提供程序,代码在Tomcat中工作正常,但是当我在JBoss中部署它时,当我不提交可选部分时,我会得到405返回代码 我是否在这里做错了什么,或者无法以可移植的方式完成此操作?请验证是否已经使用/mypath定义了一个接受不同方法的路径,
@Path(/mypath{param1:(/param1)?}”)
我使用RestEasy作为我的JAX-RS提供程序,代码在Tomcat中工作正常,但是当我在JBoss中部署它时,当我不提交可选部分时,我会得到405返回代码
我是否在这里做错了什么,或者无法以可移植的方式完成此操作?请验证是否已经使用/mypath定义了一个接受不同方法的路径,这可能是返回405(不允许使用方法)的原因。另外,当您有可选参数时,我想最好让它们成为查询参数。问题在于冒号前缺少空格:
@Path(/mypath{param1:(/param1)?})
应该是:
@Path(/mypath{param1:(/param1)?})
显然,这是一个bug,因为它使得冒号周围的空格是可选的。我还发现我不是第一个。在我的例子中,我不得不使用另一个表达式:
@Path('/mypath/{param1:(\\w+?}')
否则,您必须清除参数。使用Dropwizard 1.0和Java8,您可以使用可选的
@Path("/news")
getLastNews(@QueryParam("topicId") String topicId, @QueryParam("limit") Optional<Integer> limit)
及
在我的情况下不起作用但是does@NeerajJain我的问题涉及RestEasy,你链接的是关于Jersey的,是关于
@Path
而不是@QueryParam
这是我遇到的错误。我有一个GET
at/和一个POST
at/{filename},其中filename是可选的。因此,GET和post的帖子发生了冲突。
/news?topicId=123213?limit=200
/news?topicId=123213