4

我有一个使用 ServerResource 处理 HTTP GET 请求的 Restlet (v2.1.1) 组件。

我想将过滤器和/或路由器放入组件中,以便它们可以在请求到达 ServerResource 之前进行一些处理。

我一直在 Internet 上搜索执行此操作的示例,以及阅读“Restlet in Action”一书。我发现了一些有趣的东西:

有很多关于如何在组件中设置 ServerResource 的示例。

有很多关于如何创建和设置过滤器和路由器的示例。

不幸的是,无论我在书中还是在互联网上搜索,我都找不到同时使用这两种方法的示例!

根据这本书和网上的教程,我们应该可以创建一个组件,在组件中设置一个ServerResource,并使用过滤器对去往ServerResource的请求进行预处理。任何地方的文档似乎都没有确切地告诉我们如何做到这一点。

我误读了一切吗?真的没有办法将过滤器或路由器放在带有 ServerResources 的组件中吗?还是我在某处遗漏了一些文档,该文档提供了如何执行此操作的真实示例?

有人可以提供一个简单的例子或提供一个这样做的例子的链接吗?

谢谢...

4

1 回答 1

6

您需要将过滤器附加到路由器,然后使用以下方法将 ServerResource 附加到过滤器setNext(Class<? extends ServerResource> targetClass)

Filter myFilter = new MyFilter(getContext());
myFilter.setNext(MyServerResource.class);
router.attach("/test", myFilter);

beforeHandle(Request request, Response response)现在您可以使用过滤器的方法进行预处理。如果CONTINUE在此方法中返回,过滤器会将请求传递给 ServerResource。

于 2013-01-28T12:22:20.963 回答