代码之家  ›  专栏  ›  技术社区  ›  Finbarr

Restlet ServerResource方法参数?

  •  4
  • Finbarr  · 技术社区  · 14 年前

    这可能是一个非常愚蠢/简单的问题,答案非常明显,似乎不值得在restlet文档中说明。Restlet可以在哪里以及如何(如果有的话)将参数传递给ServerResource类中的方法?

    给定这个类:

    public class FooServerResource extends ServerResource {
        @Get
        public String foo(String f) {
            return f;
        }
    }
    

    以及路由器附件 router.attach("/foo", FooServerResource.class);

    2 回复  |  直到 14 年前
        1
  •  8
  •   Bruno    14 年前

    您可以使用从资源引用访问查询参数。通常,像这样的:

    @Get
    public String foo() {
        Form queryParams = getReference().getQueryAsForm();
        String f = queryParams.getFirstValue("f");
        return f;
    }
    

    一般来说(这也适用于其他方法 GET getRequest() ServerResource .

        2
  •  1
  •   monnoo    13 年前

    你好

    这个问题大约有一岁大,但我刚从Restlet开始,就遇到了“相同”的问题。我指的是服务器,而不是客户机(正如布鲁诺所说,最初的问题是服务器和客户机的混合部分)


    幸运的是,可以从资源类中访问Restlet引擎的应用程序对象,从而也可以访问创建组件、服务器等的类。

    protected Application initObjLinkage(){
    
        Context cx = this.getContext();
        Client cli = cx.getClientDispatcher();
        Application app = cli.getApplication() ;
        return app;
    }
    

    随后,您可以使用反射和接口访问应用程序类(仍在资源类中)中的方法,检查 关于这个。。。

    Method cbMethod = app.getClass().getMethod("getFoo", parameterTypes) ;
    CallbackIntf getmethodFoo = ( CallbackIntf )cbMethod.invoke( app, arguments );
    String str = getmethodFoo()
    

    在我的应用程序中,我使用此机制访问 它将接收到的数据提供给业务逻辑的类。这种方法是我所有资源类的标准,使它们非常统一、标准化和小型化。
    所以。。。我只希望这是有帮助的,并且有{no/some}方法可以用更简单的方式来完成:)