【问题标题】:Generate REST from WSDL从 WSDL 生成 REST
【发布时间】:2013-04-14 11:00:50
【问题描述】:

我正在寻找自动生成 REST ws 的最佳方法。 我们收集了带有为它们生成的 WSDL 的 Web 服务 (SOAP)。我需要提供不同的 API 来调用这些 Web 服务。 (PHP、Pyton、REST、CLI ...) 要求之一是这些 ws 具有 REST API。

生成 REST 客户端/服务器的最佳方式是什么,是否有任何自动工具可以做到这一点? WSDL 有可能会更改每个版本。

谢谢

【问题讨论】:

  • REST 和 WSDL 是根本对立和不兼容的概念.... WSDL/SOAP 服务是围绕 函数 和方法(与客户做某事 ),而 REST 基于 resources (HTTP GET /customer/5)。我高度怀疑您是否能够将 SOAP WSDL 任何有意义的“转换”为任何与 REST 服务类似的东西......
  • @marc_s 协议设计者的理论就是其中之一。现实生活是第二种,当休息被选中架构时,因为是唯一的协议投影机了解,是时尚的,每一个年轻的网站管理员都理解等......应该使用来自经典web-services i>的东西。我认为问题很好(但我找不到工具)。我的意见的第二部分是下面的答案。

标签: rest wsdl


【解决方案1】:

不可能从 WSDL 生成 REST API。你不能混合橙子和苹果

SOAP 是建立在 HTTP 之上的协议。 WebService 由一组方法/操作表示。您可以将 WebService 视为复杂的 RPC。通常我们可以说WebServices 是关于动词的,用来调用远程方法/动作。 WebService 也没有统一的接口,这就是 WSDL 存在的原因。

REST 是架构风格(范围比 API 更广泛)。 REST API 由一组资源和表示表示。资源是信息的来源,通过统一的接口进行管理。通常我们可以说REST API 是关于名词的。因为所有资源都必须具有统一的接口,所以不需要 WADL(为 REST 创建类似 WSDL 的失败尝试)。

我怀疑您可以自动将动词转换为名词等。

【讨论】:

  • 我理解你(完全;)),但不同意。主要语言(Java C#)的现代服务器框架可以使用 SOAP+WSDL、REST(通过 JSOM/XML 直到用户)免费提供完整的服务(很少的注释/属性)。如果集成商(免费)拥有 WSDL,为什么不在 30 秒内生成类型安全的客户端代码(类)?为什么必须手动制作容易出错的可重复代码?我的意见的第一部分受到质疑。
  • @JacekCz 由于存根生成,您将失去松散耦合。如果服务描述发生变化,那么您必须重新生成代码,并重新编译、重新部署您的应用程序。简单地说,这种描述会阻止 API 更改的运行时适应。这就是为什么;)
  • 1.强化 API 不是大学理论,而是真实的商业生活。 2. 来自您朋友的真实故事:具有一致(甚至是事务性)数据的“端点”(URI'u)的开槽集。 动词变成方法等等。在这个阶段改变协议?不!不!不!构建协议经典 web 服务。通过 URL 更改数据不是 API 更改吗?这是 api 更改。编译(比如安全)方式与解释方式(不需要重新编译,但可以直接使用)。
  • 3 我不是 SOAP 的狂热爱好者,主要的 2 语言版本的解决方案是 Apache Thrift “IDL first”解决方案,非常优雅和高性能的服务(顺便说一句,协议版本中有动态升级字段的概念, 你会喜欢它)。只有集成了古老的第 3 代 Delphi 才无法“节俭说话”,因此转向“coomon denominator”生成 SOAP。掌握 3 种语言/环境/软件提供商解决方案永远不需要流利的 api
【解决方案2】:

请查看以下描述如何使用 WSDL2.0 描述 REST 服务的文章。只有在预期的消息格式是 XML 时才能使用它。 https://www.ibm.com/developerworks/library/ws-restwsdl/

【讨论】:

    【解决方案3】:

    无需重写现有的基于 SOAP 的 Web 服务,而是使用 API Express 将其呈现为移动就绪的 REST 服务。无需转换。继续运行 SOAP 服务,通过 WSDL 文件和一些配置参数,它可以轻松地作为 REST 服务集成到移动应用程序中。

    如何将 WSDL 服务 (SOAP) 公开为 REST API:https://dzone.com/articles/how-to-expose-a-wsdl-service-soap-as-rest-api

    Appery.io API Express:https://appery.io/api-express/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 2010-11-16
      相关资源
      最近更新 更多