【问题标题】:Restlet service with multiple post resources具有多个帖子资源的 Restlet 服务
【发布时间】:2015-10-12 10:52:54
【问题描述】:

我有一个 restlet 应用程序,除此之外,我还有两个后期服务,除了端点的尾部之外更纤细。

例子

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

我已将这两个资源的业务写在单独的文件中。现在我怀疑是否可以将这两个业务写在同一个文件中。提前致谢

【问题讨论】:

    标签: java rest restlet


    【解决方案1】:

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

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

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

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

    您可以注意到扩展可以由 Restlet 的隧道服务管理。在应用程序中查看getTunnelService().setExtensionsTunnel(true)

    已编辑

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

    • 使用 Restlet 服务器资源,您不能。唯一可能的事情是定义一个包含所有处理的类,并从不同的服务器资源引用/使用它。
    • 您可以考虑使用 Restlet 的 JAX-RS 支持。这允许在同一个类中定义多个 REST 端点,如下所述。此链接可以为您提供更多详细信息: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() {
              (...)
          }
      }
      

    希望对你有帮助 蒂埃里

    【讨论】:

    • /api/myservice 和 /api/myservice2 有不同的业务。
    • 都是post方式,我想把它的业务写在一个文件里自己写
    • 我用这方面的描述更新了我的答案......希望它有所帮助!
    • 您也可以考虑将代码添加到业务层,而不是使用资源层。
    • 嘿蒂埃里!这实际上是我的选项#1 ;-):“定义一个包含所有处理和引用/从不同服务器资源使用它的类”。当然这个类对应业务层...
    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多