具有多个 post 资源的 Restlet 服务

Restlet service with multiple post resources

我有一个 restlet 应用程序,除此之外,我有两个 post 服务,除了端点的尾部外,其他服务都更苗条。

示例

POST /example.com/api/myservice.json and POST /example.com/api/myservice2.json

我已经将两个资源的业务写在单独的文件中。现在我怀疑是否可以将两个业务写在同一个文件中。在此先感谢

您需要遵循 Restlet 组织应用程序的方式。我的意思是资源附加在一个或多个路径上。在资源中,您可以定义服务请求的方法,总结如下:

  • 附加到路径的资源
    • 方法GET(举例)
    • 方法POST(举例)

如果您对两条路径的处理完全相同,则可以为这两条路径附加相同的资源class。类似的东西:

Router router = new Router(getContext());
router.attach("/api/myservice", MyServerResource.class);
router.attach("/api/myservice2", MyServerResource.class);

您可以注意到扩展可以通过Restlet 的隧道服务进行管理。请参阅应用程序中的 getTunnelService().setExtensionsTunnel(true)

已编辑

相反,如果你想把一些处理集中到一个实体中,有两种选择:

  • 使用 Restlet 服务器资源,您不能。唯一可能的事情是定义一个包含所有处理的 class 并从不同的服务器资源引用/使用它。
  • 可以考虑使用Restlet的JAX-RS支持。这允许在同一个 class 中定义多个 REST 端点,如下所述。 link 可以为您提供更多详细信息:http://restlet.com/technical-resources/restlet-framework/guide/2.2/extensions/jaxrs.

    public class MyResource {
        @POST
        @Path("/api/myservice")
        public SomeObject1 handleRequest1() {
            (...)
        }
    
        @POST
        @Path("/api/myservice2")
        public SomeObject2 handleRequest2() {
            (...)
        }
    }
    

希望对你有帮助, 蒂埃里