我正在通过 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 被调用,名称:null,年龄:0
POST 的输出是
addUser 被调用,姓名:Abhi,年龄: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>
我的问题是为什么我无法使用 GET 请求获取值@FormParam
?
GET 请求表单的默认行为是将键/值放在请求参数。如果您查看 URL 栏,您可能会看到类似的内容
http://localhost:8080/app/form/addUser?name=something&age=100
与 POST 请求相反,这部分name=something&age=100
实际上会出现在请求正文中,而不是 URL 中。这是哪里@FormParam
有效,因为它是为了application/x-www-form-urlencoded
数据类型,如正文。 GET 请求不应有正文,因此数据在 URL 中发送。
为了使 GET 请求正常工作,我们需要一个与查询字符串一起使用的不同注释。该注释是@QueryParam
。所以只需更换@FormParam("name")
with @QueryParam("name")
和年龄相同
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)