我有一个Restlet(v2.1.1)组件,它使用ServerResource来处理HTTP GET请求。
我想将过滤器和/或路由器放入组件中,以便在请求到达ServerResource之前进行一些处理。
我一直在互联网上搜索这样做的例子,以及阅读“Restlet in Action”一书。我发现了一些有趣的东西:
有很多关于如何在组件中设置ServerResource的示例。
有很多关于如何创建和设置过滤器和路由器的示例。
不幸的是,通过本书和互联网搜索,我找不到使用这两者的例子!
根据本书和Internet上的教程,我们应该能够创建一个组件,在组件中设置ServerResource,并使用过滤器来预处理发送到ServerResource的请求。没有任何文档似乎告诉我们如何做到这一点。
我误读了一切吗?是否真的没有办法将过滤器或路由器放在带有ServerResources的组件中?或者我错过了一些提供如何执行此操作的真实示例的文档?
有人可以提供一个简单的例子,还是提供一个这样做的例子的链接?
...谢谢
答案 0 :(得分:6)
您需要将过滤器附加到路由器,然后使用setNext(Class<? extends ServerResource> targetClass)
方法将ServerResource附加到过滤器:
Filter myFilter = new MyFilter(getContext());
myFilter.setNext(MyServerResource.class);
router.attach("/test", myFilter);
现在您可以使用过滤器的beforeHandle(Request request, Response response)
方法进行预处理。如果在此方法中返回CONTINUE
,则过滤器会将请求传递给ServerResource。