- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
比如说,我在 java 中有生产者,在点网中有消费者。生产者有一个方法需要员工作为方法参数并在数据库中创建员工。
对于基于 SOAP 的 ws,dot net 客户端将访问 WSDL 并创建 stub (包括 dot net 中的员工数据表示)。现在可以填对象并发送给生产者。
由于没有 WSDL,我不确定它在 Restful 网络服务中如何工作。休息消费者将如何知道操作是什么 在没有任何 WSDL 契约(Contract)的情况下由生产者公开,以及 dot net 消费者如何获得 stub (如员工数据对象)以便它可以简单地填充它并发送?
我知道有 WADL(与 WSDL 平行)在休息,但看起来它不是很突出,目前还不是标准。
我不明白客户端代码将如何生成 EmployeeData 类,以便它可以填充它并发送给生产者?客户端是否会手动创建额外的类(而不是过去使用客户端可用的实用程序基于 WSDL 生成的代理 EmployeeData)?即使客户端必须手动执行,如果没有 wsdl 或 wadl,客户端如何知道 EmployeeData 类的类定义是什么?
最佳答案
REST 的一个重要概念是 HATEOAS or Hypermedia as the Engine of Application State .这意味着您的客户端通过服务传递给它的超媒体链接与 REST 服务交互。
您的 REST 网络服务有一个入口点,比如 http://yourhost.com/rest
。您的客户端将首先向该 URL 发送请求。您的服务将使用描述部分或所有可访问资源以及如何访问它们的资源进行响应。您不断发现并关注链接。这就是发布(和发现)API 的方式。
这里有一个描述这个概念的很棒的视频:Hypermedia APIs.
通过 HATEOAS,您只需点击超媒体链接即可让您的服务 API 完全被发现。
没有top down/bottom up的概念在 REST 中设计。
REST 是关于资源的,而不是关于方法调用的,这基本上是 WSDL 所描述的。
Even if client has to do it manually, how client will know what is the class definition of EmployeeData class without wsdl or wadl?
不需要创建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 请求跟踪此链接。应用状态是在本次请求后,会存在一个新员工。
关于java - restful WS 中的 WSDL 等价物是什么。如果没有,消费者如何生成所需的客户端类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427747/
我有一个依赖于包 B 的包 A。当包 A 中的代码运行并访问包 B 中的类时,包 B 的状态将被解析 (4),而不是 Activity (32) 和包 B 的激活器也没跑好。我认为 bundle B
这个问题在这里已经有了答案: How to remove the space between inline/inline-block elements? (41 个回答) 关闭 7 年前。
我正在尝试使用 Java OpenAL 库。我在导入名为 libsoft_oal.so 的 native 库时遇到问题。 Java OpenAL 依赖于 OpenAL 软实现。我尝试根据他们在 git
我正在尝试启动我的应用程序。是一个 unicorn +工头+sinatra的应用。 这是我的 config.ru 文件: require "rubygems" require "sinatra" Bu
我有一个下拉列表,其中包含一些从数据库表中检索的值,我想要的是当单击按钮时它应该只获得选项标签的中间值,但只有那些类名为“get_this”的选项标签并离开那些选项,如果他们没有这个类 预期输出:值
我有一个index.php文件,需要一个通用的head.php文件,head.php文件中有几个Javascript文件,当这样尝试时,代码在源代码中看起来很好,但文件却不是实际上对文档做任何事情。
有人能帮帮我吗? 我已经像这样运行了 imsmod: $ insmod /data/mm/mmdev.ko epoll_rate=100 但是我得到一个错误: insmod: init_module
是否有键盘快捷键或插件可以在 Notepad++ 中打开 PHP 所需或包含的文件?我知道,在 Dreamweaver 中,执行此操作的命令是 Ctrl+D,但我似乎无法在 Notepad++ 中找到
我已经用 js 设置了一个显示/隐藏 div,但我很难弄清楚如何一次显示一个 div。目前发生的情况是,除非我再次单击原始链接来关闭该 div,否则每个 div 都会显示。 http://www.li
当我尝试将未分配的辅助分片分配给节点时出现错误。 { "error": { "root_cause": [ { "type": "remote_transpor
我正在构建一个 C++ 应用程序,使用 Netbeans 6.9 作为我的 IDE。我有一个 C++ 库,它是一个纯 C 库的包装器。 我已将文件正确添加到项目中(使用添加库文件选项)。这是 g++
我是一名优秀的程序员,十分优秀!