gpt4 book ai didi

java - 对 reSTLet 中的多个映射应用相同的过滤器

转载 作者:行者123 更新时间:2023-11-30 04:00:46 25 4
gpt4 key购买 nike

我有一个reSTLet,其中我正在为各种资源应用映射,所有这些资源都应该通过公共(public)过滤器,但如果过滤条件匹配,即返回值“CONTINUE” ”,所有过滤器都重定向到不同的资源。

public synchronized Restlet createInboundRoot()
{
System.out.println("Called Application ");
Router router = new Router();
Filter fil1 = filterObj();
router.attach("/helloworld",fil);
fil.setNext(HelloWorldResource.class);
router.attach("/hello",fil);
fil.setNext(HelloWorldResource1.class);
return router;
}

但是这里发生的是,在执行结束时,过滤器重定向到 setNext() 提到/使用的最后一个资源,在本例中是 HelloWorldResource1,即什至如果

http://localhost:8600/API/TRIAL/helloworld 

被调用,它将其重定向到HelloworldResource1.class

如果我为每个映射创建不同的过滤器对象并将其用于重定向,这个问题就可以解决,但我不确定这是否是最好的方法。有人可以指导我以最有效、最正确的方式实现结果吗?

最佳答案

ReSTLet 中的路由是链式的。您需要使用过滤器构建一条链,然后使用路由器构建一条链。然后像这样:过滤器->路由器->(资源1|资源2)

使用您的示例,它看起来像这样:

public synchronized Restlet createInboundRoot()
{
Router router = new Router();
router.attach("/helloworld",HelloWorldResource.class);
router.attach("/hello",HelloWorldResource1.class);
Filter fil1 = filterObj();
fil1.setNext(router);
return fil1;
}

请注意,Filter 是一个ReSTLet(它扩展了ReSTLet)。请参阅http://restlet.org/learn/javadocs/2.1/jse/api/org/restlet/routing/Filter.html

关于java - 对 reSTLet 中的多个映射应用相同的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22033119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com