说,我在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
,您将发送一个GET请求,/employees
该请求可能会返回包含如何执行此操作的响应.那可能是像这样的XHTML响应(除其他外)
响应包含创建新员工时需要遵循的确切格式.您需要/context/employees
使用包含这些表单参数的HTTP PUT请求提交表单.这是HATEOAS.超媒体链接是/context/employees
.引擎通过PUT请求跟随此链接.应用程序状态是在此请求之后,将存在新员工.