【问题标题】:Need example of putting filter in Restlet Component需要将过滤器放入 Restlet 组件的示例
【发布时间】:2013-01-25 14:50:51
【问题描述】:

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

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

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

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

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

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

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

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

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

谢谢...

【问题讨论】:

    标签: restlet restlet-2.0


    【解决方案1】:

    您需要将过滤器附加到路由器,然后使用方法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。

    【讨论】:

    • 如果想省去中间人,可以router.attach("/test", new MyFilter(getContext(), createFinder(MyServerResource.class)));
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多