在其他世界中使用@PUT的最佳做法是什么?我有一个简单的方法
@PUT
@Path("/")
public boolean putShotComponentNote(String note) {
System.out.println(note);
return true;
}
当我尝试使用Chrome插件(如简单REST客户端或REST控制台)访问此方法时,我指定了网址,在数据段中我放置了键值对
note=This is some note
在我的方法中,我同时获得了关键和价值。理想情况下,我只想根据变量的名称获取值,就像我在http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Web_Platform/5/html-single/RESTEasy_Reference_Guide/index.html
的一些示例中看到的那样@PUT
@Path("array")
@Consumes("application/xml")
public void putCustomers(Customer[] customers)
{
Assert.assertEquals("bill", customers[0].getName());
Assert.assertEquals("monica", customers[1].getName());
}
那么有人能指出我正确的方向吗?
全部谢谢
这可能是困难吗?
这是发送的请求
Request Url:
http://localhost:8080/rest/
Request Method: PUT
Status Code: 415
Params: {
"note": "asd"
}
那么如何访问笔记参数? @PathParam不会工作,@QueryParam也不会只是普通的String(如上所述)得到我note = asd我想避免这种情况。
这是可能的
答案 0 :(得分:0)
这取决于您的参数的发送方式。由于@QueryParam未检测到您的数据,因此您的数据可能位于表单内。
尝试@FormParam: http://docs.jboss.org/resteasy/docs/1.1.GA/userguide/html_single/index.html#_FormParam
我最近在通过JQuery的ajax函数发送PUT请求时遇到了这个问题。以下是调用REST服务的方法:
$.ajax({
type:"PUT",
url:"/rest/",
data:{ "var1": "val1",
"var2" : "val2"}
});
如果您只是想获取参数的字符串值,RESTEasy可以通过java.util.list对象轻松获取它们。我使用URL编码作为示例,但这也可以应用于其他人:
@PUT
@Consumes("application/x-www-form-urlencoded")
public void Method1(@FormParam("var1") List<String> list1,
@FormParam("var2") List<String> list2){
String v1 = list1.get(0);
String v2 = list1.get(0);
System.out.println(v1);
System.out.println(v2);
}
输出:
val1
val2