把注释和Resteasy放在最佳实践中

时间:2012-08-06 21:49:10

标签: java http rest resteasy put

在其他世界中使用@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我想避免这种情况。

这是可能的

1 个答案:

答案 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