首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Restlet中的API模块化

Restlet中的API模块化
EN

Stack Overflow用户
提问于 2013-05-30 23:21:41
回答 1查看 94关注 0票数 0

我开发了一个基于Restlet API的web应用程序。随着时间的推移,我添加了更多的特性,有时我需要在不同的端点上重用相似的REST API组,这提供了稍微不同的执行上下文(比如切换具有相同模式的不同数据库实例)。我喜欢重构我的代码,使API可重用,并在不同的端点重用它们。我最初的想法是为每个可重用的API设计一个应用程序,并将它们附加到路由器上:

代码语言:javascript
运行
复制
router.attach("/context1",APIApplication.class)
router.attach("/foo/context2",APIApplication.class)

API应该与REST API的配置无关。将上下文信息(例如数据库实例)传递给应用程序API的最佳方式是什么?这种方法可行且正确吗?在Restlet中重用REST API的最佳实践是什么?如果有一些代码示例来说明您的答案,将不胜感激。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-06-03 23:34:52

我已经看到了这个基本的设置,它使用一个组件作为顶层对象,将子应用程序连接到VirtualHost,而不是路由器,就像这个骨架示例一样。

代码语言:javascript
运行
复制
public class Component extends org.restlet.Component
{
  public Component() throws Exception
  {
    super();
    // Client protocols
    getClients().add(Protocol.HTTP);

    // Database connection
    final DataSource dataSource = InitialContext.doLookup("java:ds");
    final Configuration configuration = new Configuration(dataSource);

    final VirtualHost host = getDefaultHost();

    // Portal modules
    host.attach("/path1", new FirstApplication());
    host.attach("/path2", new SecondApplication(configuration));
    host.attach("/path3", new ThirdApplication());
    host.attachDefault(new DefaultApplication(configuration));
  }
}

我们使用一个自定义配置对象,基本上是一个pojo来传递任何需要的公共配置信息,并使用它来构造应用程序,我们对每个应用程序使用单独的“默认”上下文。

这最初是针对restlet 1.1.x编写的,并已通过2.0.x升级到2.1.x,尽管它可以工作并且相当整洁,但在2.1.x或2.2.x版本中可能会有更好的方法来实现这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16840002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档