[英]Restlet, An example of a get with parameters
刚开始在 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;
}
但我不确定什么是资源? 它在我的程序中不存在,并且不确定它需要是什么类型或在哪里声明它。
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;
}
}
然后你可以在他的回答中获得理查德提供的代码。
希望对你有帮助。 蒂埃里
我知道这个问题很久以前就有人问过,但我认为您正在寻找的答案是:
应用代码
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");
(String)this.getRequestAttributes().get("user");
允许您从 URL 中提取详细信息。
希望这可以帮助
似乎您正在寻找的是这样的:
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? 对于类似的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.