gpt4 book ai didi

java - 使用包含反斜杠的 URL 中的参数处理 POST 请求

转载 作者:行者123 更新时间:2023-11-30 10:20:25 27 4
gpt4 key购买 nike

我无法控制请求/请求类型/ header /正文。

我正在创建一个 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,我可以通过读取请求地址来检索完整的字符串。

是否有 POST 请求的“通配符”选项可以实现类似的东西:

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

最佳答案

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

关于java - 使用包含反斜杠的 URL 中的参数处理 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48217298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com