gpt4 book ai didi

java - @FormParam 不适用于 GET 方法-RestEasy

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:21 24 4
gpt4 key购买 nike

我正在使用 Resteasy 学习 Web 服务

我正在做一个简单的基本示例,使用 @FormParam 轻松休息。我的示例在请求方法为 POST 时有效但是当我将请求方法更改为 GET

时不起作用
@Path("/form")
public class FromParamService {

@POST
@Path("/add")
public Response addUser(
@FormParam("name") String name,
@FormParam("age") int age) {

return Response.status(200)
.entity("addUser is called, name : " + name + ", age : " + age)
.build();

}


@GET
@Path("/adduser")
public Response addUser1(
@FormParam("name") String name,
@FormParam("age") int age) {

return Response.status(200)
.entity("addUser is called, name : " + name + ", age : " + age)
.build();

}
}

GET 的输出是

addUser is called, name : null, age : 0

POST 的输出是

addUser is called, name : Abhi, age : 23

GET请求的jsp是

<html><body>       

<form action="rest/form/adduser" method="get">
<p>
Name : <input type="text" name="name" />
</p>
<p>
Age : <input type="text" name="age" />
</p>
<input type="submit" value="Add User" />
</form></body></html>

而POST请求的Jsp是

<html><body>


<form action="rest/form/add" method="post">
<p>
Name : <input type="text" name="name" />
</p>
<p>
Age : <input type="text" name="age" />
</p>
<input type="submit" value="Add User" />
</form></body></html>

我的问题是为什么我无法通过 @FormParam 使用 GET 请求获取值?

最佳答案

GET 请求的默认行为是将键/值放在 query string 中.如果您查看 URL 栏,您可能会看到类似于

http://localhost:8080/app/form/addUser?name=something&age=100

与 POST 请求相反,此 oart name=something&age=100 实际上将位于请求正文中,而不是 URL 中。这是 @FormParam 工作的地方,因为它是 application/x-www-form-urlencoded 数据类型的主体。 GET 请求应该没有正文,所以数据在 URL 中发送。

为了让 GET 请求起作用,我们需要一个不同的注释来处理查询字符串。该注释是 @QueryParam。因此,只需将 @FormParam("name") 替换为 @QueryParam("name") 并且年龄相同

关于java - @FormParam 不适用于 GET 方法-RestEasy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789801/

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