我对请求/请求类型/ 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("/*")
答案 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