2

刚开始在 java 中使用 restlet,并高兴地惊讶它是多么容易。然而,这是看跌期权。然后我开始使用 get 但无法弄清楚如何使用 get 传递信息。

使用 put 很容易:

@Put
public Boolean store(Contact contact);

但是,当我尝试使用 get 来执行此操作时,它不起作用。通过阅读,我认为我不必向它传递任何参数,只需要有这个:

@Get
public Contact retrieve();

然后将参数传递给 url 之类的?但我找不到有关如何执行此操作的任何信息。与 put 我可以使用:

resource.store(user1);

请问有什么帮助吗?

我很确定这是我只需要查看示例然后就可以轻松完成的事情。如何从另一端的 url 中获取信息的示例也将非常有帮助。

谢谢

我现在在我的客户端:

String username = "tom";
ClientResource cr2 = new ClientResource("http://.../ContactManager/contacts/" + username);
ContactResource resource2 = cr2.wrap(ContactResource.class);
resource2.logIn();

在服务器端我有:

@Get
public Contact logIn(){
    System.out.println("name is " + resource.getAttributes().get("contactId"));     
    return null;
}

但我不确定资源是什么?它在我的程序中不存在,并且不确定它需要是什么类型或在哪里声明它。

4

3 回答 3

2

REST 的一个好方法是在 URI 中指定此联系人 ID。类似的东西:/contacts/mycontactid。

在应用程序类中附加资源时,您可以将此段定义为属性(在您的情况下为联系人 ID)。

public class ContactsApplication extends Application {
    public Restlet createInboundRoot() {
        Router router = new Router(getContext());
        router.attach("/contacts/", ContactsServerResource.class);
        router.attach("/contacts/{contactId}", ContactServerResource.class);
        return router;
    }
}

然后你可以得到理查德在他的回答中提供的代码。

希望它可以帮助你。蒂埃里

于 2013-01-31T13:46:11.020 回答
1

我知道这个问题是很久以前提出的,但我认为您正在寻找的答案是:

申请代码

public class ContactsApplication extends Application {
    public Restlet createInboundRoot() {
        Router router = new Router(getContext());
        router.attach("/user/", ContactsServerResource.class);
        router.attach("/user/{user}", ContactServerResource.class);
        return router;
    }
}

资源代码

@Get
public void login() 
String userName = (String)this.getRequestAttributes().get("user");

允许您从 URL中(String)this.getRequestAttributes().get("user");提取详细信息。

希望这可以帮助

于 2015-11-10T21:11:44.740 回答
0

您正在寻找的似乎是:

public final Representation get() {
  String contactId = request.getAttributes().get("contactId"));
  // Find the Contact object with that id
  JacksonRepresentation<Contact> result = 
    new JacksonRepresentation<Contact>(contact);
  return result;
}

另请参阅:如何从 android 向 RESTlet webservice 传递参数?对于类似的方法。

于 2013-01-30T22:24:28.457 回答