为第三方创建/公开 Web 服务的设计决策
Posted
技术标签:
【中文标题】为第三方创建/公开 Web 服务的设计决策【英文标题】:Design Decision for Creating/Exposing Webservices for thrid party 【发布时间】:2012-03-26 09:54:36 【问题描述】:我们正在开发与旅游领域相关的基于 Java 的 CMS,并且正在考虑公开 Web 服务,以便感兴趣的第三方可以利用它们从我们的系统中获取数据/内容以在门户/应用程序中发布
我不确定我们应该如何公开这些 Web 服务,也无法清楚地了解设计方面。
由于我们有 Action 类(控制器)来处理视图并将数据发送回视图,这些 Action 类将负责与 Facade 层进行交互。
有人可以建议我什么应该是最好的方法。
-
我们是否也应该将 Action 类公开为 Rest 接口。
我们是否应该创建一个单独的一组应该公开的类。
我们应该继续使用 Rest 样式还是基于 SOAP 的方法
我的问题有点主观,但到目前为止我还没有任何方向,我不确定我可以在这里放任何其他信息
更新
到目前为止,我们还没有考虑预订门票等,但大部分内容都与仅从系统中获取内容有关。 但将来我们可能会提供一些选项,向第三方提供一些可以在那里销售的产品
【问题讨论】:
【参考方案1】:首先你可以看看 Difference between REST and WebServices
那么您必须知道,第三方是否能够更改您这边的某些数据(注册、身份验证、订票等)。在这种情况下,我更喜欢使用 REST。
在我看来,您应该创建一些类,这些类将负责使用您的 Action 类,并且它们还必须实现一些安全功能。我认为您的操作是内部的东西,必须在更高级别上实施安全性。
如果访问是只读的(比如获取 XXXX 类型的所有数据),那么 SOAP 也适用。
所以我的建议: 2. 单独的类集 3. 用户 REST - 虽然它似乎更灵活。
【讨论】:
感谢您的输入,基本上 Action 类是 Struts2 Action(MVC 框架),是的,从 UI 来看,我们有 Spring 安全性。【参考方案2】:如果您想节省时间和精力开销,请将操作类公开为 URL。
但是,从长远来看,REST API 将是您的最佳选择,因为它们具有可扩展性,并且如果您希望用户在以后通过 API 更新/创建数据。
【讨论】:
以上是关于为第三方创建/公开 Web 服务的设计决策的主要内容,如果未能解决你的问题,请参考以下文章