想了解Restlet Routing基本概念

Want to know Restlet Routing basic concepts

我正在使用 restlet 路由 API http://localhost:8080/www.example.com/hello/ping 但是我不知道如何使用这种方法:

/{projectName}/{wallName}

我在 Restlet routing nightmare?

谁能告诉我

1.What是使用Restlet Routing的最佳实践?

2.How 在 java?

中实施 /{projectName}/{wallName}

3.How 从这个 API?

得到 projectName 的值

事实上,一个Restlet 应用程序中有几个部分。通常,此应用程序可通过按如下所述创建的 Restlet 组件访问:

  • 独立模式(在应用程序服务器之外)

    Component component = new Component();
    component.setName("My component");
    
    component.getServers().add(Protocol.HTTP, 8182);
    
    MyApplication application = new MyApplication();
    // To attach application on /www.example.com
    component.getDefaultHost().attach("www.example.com", application);
    // To attach application on /
    component.getDefaultHost().attachDefault(application);
    
    component.start();
    
  • 容器模式(servlet 支持)。对于此用例,您可以使用扩展名 ext.servlet。提供了一个前端 servlet,它可以自动包装一个组件。您只需指定应用程序实现的 class,如下所述:

    <!-- Application class name -->
    <context-param>
        <param-name>org.restlet.application</param-name>
        <param-value>
            packageName.MyApplication
        </param-value>
    </context-param>
    
    <!– Restlet adapter –>
    <servlet>
        <servlet-name>RestletServlet</servlet-name>
        <servlet-class>
            org.restlet.ext.servlet.ServerServlet
        </servlet-class>
    </servlet>
    <!– Catch all requests –>
    <servlet-mapping>
        <servlet-name>RestletServlet</servlet-name>
        <url-pattern>/*</url-pattern>
        <!-- or -->
        <!-- url-pattern>/www.example.com/*</url-pattern -->
    </servlet-mapping>
    

您现在可以实现 Restlet 应用程序了。对于此工具,class 扩展了 Application。路由必须在其方法 createInboudRoot 中定义,如下所述:

public MyApplication extends Application {
    @Override
    public Restlet createInboundRoot() {
        Router router = new Router(getContext());

        router.attach("/{projectName}/{wallName}", MyServerResource.class);

        return router;
    }
}

如您所见,服务器资源已附加到路径 /{projectName}/{wallName}。该服务器资源负责处理请求。下面描述了一个实施示例:

public class MyServerResource extends ServerResource {
    @Get
    public Representation handleGet() {
        String projectName = getAttribute("projectName");
        String wallName = getAttribute("wallName");
        (...)
    }
}

希望对你有帮助, 蒂埃里