实际上,在Restlet中,有一个匹配的路线模式。以下是框架中的行为:
- 当您在虚拟路径上附加路由时,默认模式为“STARTS WITH”。因此,像
attach("/test", ...)
之类的URL将会匹配,如/test
和/testsomething
。
- 在路由器上附加路由时,默认模式为“EQUALS”。所以像
attach("/test", ...)
这样的东西,只有网址/test
会匹配。
的attach
方法返回一个模板路线上,你可以改变这种匹配:
TemplateRoute route = component.getDefaultHost().attach(
"/test", new Restlet() {
@Override
public void handle(Request request, Response response) {
response.setEntity("test", MediaType.TEXT_PLAIN);
}
});
// Default matching mode
int defaultMatching = route.getMatchingMode();
// Set another matching mode
route.setMatchingMode(Template.MODE_EQUALS);
事实上,它更通常实施的Restlet应用程序并将其安装到组件上的虚拟主机。在这种情况下,你将有完全匹配。
这里是做的方式:
Component component = new Component();
(...)
MyRestletApplication application = new MyRestletApplication();
component.getDefaultHost().attachDefault(application);
这里是应用程序示例内容:
public class MyRestletApplication extends Application {
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
TemplateRoute route = router.attach("/test", MyServerResource.class);
// Default matching mode
int defaultMatching = route.getMatchingMode();
return router;
}
}
和服务器资源的内容:
public class MyServerResource extends ServerResource {
@Get
public String test() throws Exception {
return "test";
}
}
希望它可以帮助你, Thierry
谢谢蒂埃里,我会继续努力吧。尝试设置匹配模式而无需等待应用程序。祝你今天愉快 – Electron