【问题标题】:Implementing a public API in java. What framework?在 java 中实现公共 API。什么框架?
【发布时间】:2011-04-03 09:29:43
【问题描述】:

我目前正致力于实现我们网络应用程序的公共 API。该应用程序是用 Java 编写的。

这是一个部署在 Tomcat 上的金融应用。我的用户可以管理他们的销售、客户、采购、库存等。这是一个非常庞大的应用程序。字体端是用 Java/GWT 编写的。后端也是用 Java 编写的。我们之间使用 GWT-RPC 机制。

我们想要提供一种通过公共 API 访问财务数据(读取 + 写入)的方法。这样,开发人员将能够更好地集成他们的应用程序(例如工资单应用程序)。

我们不使用任何框架。没有 Spring,grails 等等。此外,没有 Hibernate、JPA 等。这是一个相当古老的应用程序,有很多 ORM、XML-> javabean 的专有代码。身份验证等。无法更改所有这些,因为应用程序已经在生产中并且它只是以这种方式工作。

API 基础架构将位于不同的子域和不同的服务器上。

API 应使用 Oauth 对用户进行身份验证。

我研究了 Grails、Play!Framework 和 Restlet 来实现我的目标

有人对它们有想法吗?我在这些框架上走错路了吗?还有其他框架可以看吗?

谢谢大家

【问题讨论】:

    标签: java api frameworks integration


    【解决方案1】:

    我建议遵循 Amazon 等的示例并将该 API 公开为 Web 服务,而不考虑 UI。对于 SOAP 与 REST,您还有更多选择。我想您会发现 REST 对您的客户来说会更简单,因为他们只需要了解 HTTP。

    如果您选择不使用,这并不强制要求使用任何框架。无论您是否使用 Spring、Hibernate、Grails 等,后端都可以正常工作。

    如果您想要真正的重用,您必须重新设计您必须调用服务的应用程序,但从长远来看这可能是值得的。这样一来,您的 UI 和客户端都将使用通用的后端 API。

    【讨论】:

    • 感谢您的想法。亚马逊方式是我的选择之一。是的,我们要统一后端。 API 将成为业务逻辑的唯一入口点。这就是计划。
    【解决方案2】:

    我有一些想法是的。金融应用程序往往不使用 OAuth。需要明确的是:没有拥有易受攻击数据的人使用 OAuth。这包括隐私、医疗和财务数据。

    【讨论】:

    • 您是否知道 OAuth 中存在特定漏洞?
    • 嗨斯蒂芬,谢谢你的回答。显然,我不会让我的用户授权任何应用程序访问他们的数据。管理员将授予某些应用程序访问某些用户的数据。但也许,我可以使用签名的 http 调用来确保安全性(ala AWS)。 Oauth 对我来说不是什么要求。如果这不是正确的方式,我将使用另一种方式
    • 定时攻击更多的是实现细节而不是协议问题。我认为您的原始观点是 OAuth 解决的基本问题不适用于财务数据。对此,我想说约束委派绝对适用于医疗数据,并且正是每个患者想要的。
    【解决方案3】:

    您希望在何种部署环境中使用此 API。这可能会缩小范围,如果您完全不知道您的客户是谁,那么标准答案仍然应该是 SOAP(因为很多人都知道并接受这个流行词)。

    【讨论】:

    • 我的应用程序是部署在 Amazon EC2/S3/SQS 上的 Saas 应用程序。可能有兴趣将他们的应用程序与我的应用程序集成的开发人员主要使用 PHP、Ruby 和 java。
    • 有趣...OAuth 绑定了所有这些平台,您的安全模型是什么?是用户控制数据还是您与服务提供商之间的反向渠道协议?对于反向通道的东西,我只会使用 SSL 相互身份验证作为机制。
    • 用户在控制数据。他们不是反向渠道协议。
    【解决方案4】:

    如果您要通过公共 Internet 向基于 Java 的金融服务应用程序公开读/写,我会使用 JAX-WS 来查看基于 SOAP 的 Web 服务,因为在 @987654322 中有相当成熟的安全规范@ 并且该 API 相对易于使用,并且可能不需要对现有应用进行太多更改。

    REST 通常被认为更容易,但对于这种类型的应用程序,您可能会发现您的目标受众更熟悉 SOAP。这一切都取决于您的目标受众是谁以及您想要达到的目标,但值得考虑。

    【讨论】:

    • 感谢布拉布斯特。但是,自从我开始使用我提到的 3 个框架后,JAX-WS 对我来说显得过于复杂了。 Grails 也提供了一些非常好的安全性,不是吗?
    • 恐怕我自己并不熟悉 Grails。如果您已经看过 JAX-WS,那就太好了,如果您没有看过,那么值得一试。
    • 我会更深入地检查它。我不想放弃任何选择。既然我们谈论财务数据,安全性是最重要的(如果不是最重要的)标准之一。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多