繁体   English   中英

什么是RESTDL WS中的WSDL等价物。 如果没有,消费者如何生成所需的客户端类?

[英]What is WSDL equivalent in restful WS . If nothing,how consumer generates required client side classes?

说,我在java网络中有生产者,在dot网络中有消费者。 Producer有一个方法,它将Employee作为方法参数并在db中创建employee。

对于基于SOAP的ws,dot net client将命中WSDL并创建存根(包括dot net中的员工数据表示)。 现在它可以填充对象并发送给制作人。

我不确定它在restful webservices中是如何工作的,因为没有WSDL。 休息用户如何知道生产者在没有任何WSDL合同的情况下暴露的操作,以及dot net consumer将如何获得存根(如员工数据对象)以便它可以简单地填充并发送?

我知道在休息时有WADL(与WSDL并行),但看起来不是很突出,而且现在还不是标准。

我没有得到客户端代码将如何生成EmployeeData类,以便它可以填充它并发送给生产者? 客户端是否会手动创建额外的类(而不是使用客户端可用的实用程序在WSDL的基础上生成的代理EmployeeData)? 即使客户端必须手动完成,客户端如何知道没有wsdl或wadl的EmployeeData类的类定义是什么?

REST的一个重要概念是HATEOAS或Hypermedia作为应用程序状态的引擎 这意味着您的客户端通过服务提供的超媒体链接与REST服务进行交互。

您的REST Web服务有一个入口点,比如http://yourhost.com/rest 您的客户端将首先将请求发送到该URL。 您的服务将使用描述部分或全部可访问资源以及如何访问它们的资源进行响应。 您不断发现并关注链接。 这就是API的发布(和发现)的方式。

这是一个描述这个概念的精彩视频: 超媒体API。

通过HATEOAS,您只需按照超媒体链接即可完全发现您的服务API。


REST中没有自顶向下/自底向上设计的概念。

REST是关于资源的,而不是关于方法调用的,这基本上是WSDL描述的内容。

即使客户端必须手动完成,客户端如何知道没有wsdl或wadl的EmployeeData类的类定义是什么?

不需要创建EmployeeData类。 假设您需要创建一个新的Employee ,您将向/employees发送一个GET请求,该请求可能会返回包含如何执行此操作的响应。 这可能是像这样的XHTML响应(除其他外)

<form class="new-employee" action="/context/employees" method="PUT" >
    <input type="text" name="employee_name" />
    <input type="text" name="employee_age" />
    <input type="submit" name="submit" />
</form>

响应包含创建新员工时需要遵循的确切格式。 您需要使用包含这些表单参数的HTTP PUT请求将表单提交给/context/employees 这是HATEOAS。 超媒体链接是/context/employees 引擎通过PUT请求跟随此链接。 应用程序状态是在此请求之后,将存在新员工。

假设您正在使用基于Json的WS - 有一些工具可以帮助:

  1. 有json解析器,可以将json或json模式文件转换为POJO类,并放入Json解析库使用的一些注释 - 请看这里: http//www.jsonschema2pojo.org/
  2. 我不知道任何可以根据所有API调用生成服务器存根的自动化工具,但是有一个很好的库可以使用它 - https://github.com/square/retrofit - 你必须仍然放置补丁和方法签名到interfase,但它更方便玩“纯”java。
  3. 还有一些非常好的工具可以帮助生成和格式化WS的文档 - 我最喜欢的是swagger: https//helloreverb.com/developers/swagger

没有(或者至少我不知道)工具允许生成存根,数据类等,因为它通常可以通过WSDL文件完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM