从WSDL生成REST

6
我正在寻找最佳的自动化生成REST ws的方法,与IT技术有关。我们有一组Web服务(SOAP),为它们生成了WSDL。我需要提供不同的API来调用这些Web服务。(PHP、Python、REST、CLI...)其中一个要求是这些ws需要有REST API。
什么是生成REST客户端/服务器的最佳方法?是否有任何自动化工具可以实现这一点?由于WSDL可能会在每个版本中更改,因此存在一定的风险。
谢谢。

REST和WSDL是根本相反且不兼容的概念。WSDL / SOAP服务是围绕“函数”和方法构建的(对客户执行某些操作),而REST基于“资源”(HTTP GET /customer/5)。我非常怀疑您能够将SOAP WSDL转换为任何类似于REST服务的有意义的“转换”。 - marc_s
@marc_s 协议设计师的理论是其中之一。现实生活是第二个,当选择REST作为架构时,因为它是唯一协议投影仪能够理解的,时尚,每个年轻的网站管理员都能理解等等...应该使用一些经典的Web服务。我认为这是一个好问题(但我找不到工具)。在我看来,第二部分就是下面的答案。 - Jacek Cz
https://dev59.com/NU3Sa4cB1Zd3GeqPuVZI#32744753 - Jacek Cz
3个回答

3
从WSDL无法生成REST API。 你不能同时使用橙子和苹果。
SOAP是建立在HTTP之上的协议。WebService由一组方法/操作表示。您可以将WebService视为复杂的RPC。通常我们可以说 WebServices涉及动词,用于调用远程方法/操作。 WebService也没有统一的接口,这就是WSDL存在的原因。
REST是一种架构风格(范围比API更广泛)。 REST API由一组资源和表示形式表示。资源是信息源,并通过统一接口进行管理。通常我们可以说 REST API涉及名词。因为所有资源必须具有统一的接口,所以不需要WADL(尝试创建类似于REST的WSDL的不成功尝试)。
我怀疑您是否能够自动将动词转换为名词等。

1
我完全理解你的意思,但并不同意。现代服务器框架针对主要编程语言(Java C#)可以使用SOAP+WSDL、REST(通过JSOM/XML到用户)免费生成完整服务(只需少量注释/属性)。如果集成者有WSDL(免费),为什么不在30秒内生成类型安全的客户端代码(类)?为什么必须手动制作容易出错且重复的代码?这是我观点的第一部分。 - Jacek Cz
@JacekCz,由于存根生成,您将失去松散耦合。如果服务描述更改,则必须重新生成代码、重新编译、重新部署应用程序。简单地说,这种描述防止了API更改的运行时适应。这就是为什么;) - Filip
  1. 强化的API不是大学理论,而是商业中的真实生活。
  2. 你朋友的真实故事:使用一组“端点”(URI'u)和一致的(甚至是事务性的)数据进行优化。动词变成方法等等。在这个阶段更改协议?不!不!不!构建经典的Web服务协议。通过URL更改数据不是API更改吗?这就是API更改。编译(说安全)的方式与解释(不需要重新编译,但可能会出错)的方式。
- Jacek Cz
我不是SOAP的狂热者,我更倾向于使用Apache Thrift的“IDL first”解决方案,这是一种非常优雅和高效的服务(顺便说一句,在协议版本中有动态升级字段的概念,你会喜欢它的)。只有集成了古老的第三方Delphi才能“使用Thrift”,所以我们转而使用生成的SOAP作为“共同分母”。手中掌握着3种语言/环境/软件提供商的解决方案,我从来不想要流畅的API。 - Jacek Cz

1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接