【问题标题】:Some doubts about RESTful web services?对 RESTful Web 服务有一些疑问?
【发布时间】:2011-04-19 07:17:46
【问题描述】:

我是 RESTful 服务领域的新手。我一直在阅读有关 REST 的文章。我有很多疑问。请帮助我消除这些疑虑。提前致谢。

1) 对于所有 RESTful Web 服务,是否会有用于描述服务的 WSDL/WADL?是否必须有服务描述?如果没有描述,我怎么知道我必须沿着 HTTPRequest 发送的数据及其结构?

我的意思是,请求内容可以是任何类型(XML、JSON、YAML 等)。并且对可以随请求发送的内容类型没有限制。如果没有描述,我怎么知道我应该发送的数据类型?

2) 通过阅读文章,我得到的印象是 RESTful 服务主要用于 CRUD 操作类的服务。不同操作的不同 HTTP 动词。但是如果你拿web services,它可以做各种操作。例如,添加 2 个数字并不完全是 CRUD 操作。如果我对可以为我执行此操作的资源使用 GET/POST,那会违反 REST 原则吗?

3) 如果您能指出任何可用于测试的公共 RESTful Web 服务,我可以尝试使用该服务并了解这些服务的复杂程度。

提前致谢,
保罗

【问题讨论】:

    标签: web-services rest sample


    【解决方案1】:

    通常没有机器可读的服务描述。您通常会通过阅读服务文档来知道要发送什么。

    REST 不限于 CRUD,PUT/GET/POST/DELETE 方法不一定create/retrieve/update/delete 相同。基于 REST 的服务可以做任何基于 SOAP 的 Web 服务可以做的事情。将 GET 请求发送到像 http://example.com/add?3,5 这样的 URI 是完全 RESTful 的。

    您可以在 http://www.programmableweb.com/apis/directory/1?protocol=REST 找到 REST 服务列表。

    【讨论】:

    • 感谢您的回复。我从您提供的 URL 中检查了 REST 服务。我发现那里没有任何服务的服务描述。所以在客户端,我们将无法使用任何代码生成工具。创建请求和调用由用户决定。如果服务足够简单,这种方法是可以的。但是如果服务很复杂,有一个代码生成器不是很好吗?
    • REST 服务不像 SOAP 服务那样需要代码生成器,虽然代码生成有其自身的问题,但是拥有它仍然很好。流行的 REST 服务,如 Facebook Graph API,确实有可用的库。
    【解决方案2】:

    回答你的第一个问题:

    WSDL/WADL 对于 Restful Web 服务不是必需的。此外,WSDL 1.1 HTTP 绑定不足以描述 RESTful Web 服务。

    但是,可以使用 WSDL 2.0 来描述它。当客户端和提供者对合同有相互理解时,应该使用Restful webservice。

    看看:http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/

    第二:是的,你几乎可以完成从 crud 操作的所有事情。就像之前的答案http://example.com/add?3,5 中所述。是一个有效的crud。

    【讨论】:

      【解决方案3】:
      1. 没有 WSDL/WADL 文件。您获得 HTTP 协议(​​例如 GET、POST、UPDATE、DELETE),其他一切由您决定。确保相应地记录您的预期输入和输出。
      2. 不,RESTful Web 服务不限于 CRUD。对于您的添加服务,我会将其实现为“加法器”资源,它将输入要添加的 2 个数字。您可以将这些输入作为 url 路径 (http://yourdomain.com/adder/1/2) 或查询字符串参数 (http://yourdomain.com/adder?var1=2&var2=2) 或作为来自 HTTP POST 的输入。由你决定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        相关资源
        最近更新 更多