Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jax-RS中的可选@PathParam_Java_Regex_Jboss_Jax Rs_Resteasy - Fatal编程技术网

Java Jax-RS中的可选@PathParam

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定义了一个接受不同方法的路径,

我有一个服务,其中路径的最后一部分是可选的,用户可以输入/mypath//mypath/param1/

我尝试使用正则表达式筛选路径的最后一部分:

@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