我有疑问。
当我向服务器请求某个URL时,服务器会收到URL请求。 (客户端:android)
例如,客户端请求网址为http://address:8182/signupUser
。
我绝对相信会调用signupUser方法。 (请在下面查看我的方法表格。)
@Post("signupUser")
public string XXXX(Representation entity){
..
}
当然,eclipse控制台中的服务器消息非常有用。
然而路由器调用其他方法“confirmUser”。
我很困惑。所有URI匹配都很完美。但是,路由器效果不佳。
请参考我目前的来源。
public class serverApplication extends Application {
public Restlet createInboundRoot(){
Router router = new Router(getContext());
router.attach("/signupUser", UserResource.class);
router.attach("/confirmUser", UserResource.class);
}
}
实际上,我不熟悉英语。我希望我的问题能够完全传达给你。
请帮帮我....
答案 0 :(得分:0)
基本上,您的示例代码将更好地工作如下:
@Post
public string XXXX(Representation entity){
..
}
@Post注释(或@Get等)不是路径路由指令的容器。 这是路由器的工作。
主要思想是:
更多想法:
路由器利用URI的分层特性。您可以在树中定义节点(节点是另一个路由器),并在路由器之前附加Filter,以便共享整个子树的行为。例如,您可以保护一组管理资源:
路由器adminRouter =新路由器(getContext()); admin.attach(" /用户/&#34); admin.attach(" /用户/ {用户}&#34); //等
//将adminRouter附加到/ admin根路径,并保护它 ChallengeAuthenticator guard =新的ChallengeAuthenticator(getContext(),ChallengeScheme.HTTP_BASIC," realm"); guard.setNext(adminRouter); //附加受保护的管理员路由器 rootRouter.attach(" / admin",guard);
例如:" / contacts / {contact}"表示代表单个联系人的资源"。 " /触点"代表联系人列表。从技术上讲,您可以附加相同的Java类(就像您在示例代码中所做的那样),但最终会得到复杂的代码。 ServerResource类实际上代表一个资源,并使用整套可接受的方法帮助处理其状态(GET用于检索状态,PUT用于存储它,DELETE用于删除它等)。
我希望这有点清楚。
正如其他答案所指出的,注释接受媒体类型参数(也支持查询值)。我建议你看看这个页面:http://restlet.com/learn/guide/2.2/core/resource/