使用包含反斜杠的URL中的params处理POST请求

时间:2018-01-11 23:13:21

标签: java web-services servlets post apache-camel

我对请求/请求类型/ headers / body没有任何控制权。

我正在创建一个servlet,它必须处理一个POST请求,该请求将在请求url中包含多个反斜杠。 (例如www.servlet.com/path/foo1/foo2/foo3/foo4/foo5

我想捕捉价值" foo1 / foo2 / foo3 / foo4 / foo5"并且反斜杠的数量可以变化。以下解决方案将用于捕获一个" foo"但是只要有更多,它就会404。

@Path("/path")
@WebService
public interface myService {    
    @POST
    @Path("/{resource}")

{resource}只会传回" foo1",但如果我可以通过404,我可以通过阅读请求地址来检索完整的字符串。

是否有#34;通配符" POST请求的选项,可以实现

的内容
@Path("/path")
@WebService
public interface myService {    
    @POST
    @Path("/*")

1 个答案:

答案 0 :(得分:1)

https://docs.jboss.org/resteasy/docs/3.0.3.Final/userguide/html/Using_Path.html

The @Path annotation is not limited to simple path expressions.
You also have the ability to insert regular expressions into @Path's value. For example:

@Path("/resources)
public class MyResource {

   @GET
   @Path("{var:.*}/stuff")
   public String get() {...}
}
The following GETs will route to the getResource() method:

GET /resources/stuff
GET /resources/foo/stuff
GET /resources/on/and/on/stuff
The format of the expression is:

"{" variable-name [ ":" regular-expression ] "}"

现在这对我有用。我的代码如下:

@Path("/path")
@WebService
public interface myService {    
    @POST
    @Path("/{resource: .*}")

它正在捕捉所有东西,但'?'这可能只是一个正则表达式的事情。当我找到解决方案时,我会跟进如何抓住这个角色。

编辑:'?'被@QueryParams捕获,所以你可以用

之类的东西解析它
@QueryParam("param1") String param1