【发布时间】:2012-05-22 14:53:18
【问题描述】:
REST API 和普通 API(打印 JSON 响应)有什么区别?
【问题讨论】:
标签: php api zend-framework rest
REST API 和普通 API(打印 JSON 响应)有什么区别?
【问题讨论】:
标签: php api zend-framework rest
完全没有区别。 REST 描述了一种与 HTTP 服务器交互的方式,而不是服务器应返回的响应。大多数 Web 应用程序通过 POST 或 GET 请求与服务器端交互,其中包含满足 POST 表单提交或 GET 查询字符串中的请求所需的任何附加信息。因此,如果您想从服务器中删除某些内容,他们通常会使用包含指定资源的数据以及删除它的指令的表单进行 POST。
但是,HTTP 实现了 GET 或 POST 以外的方法(也称为动词)。除其他外,它还实现了 HEAD(返回与 GET 相同的标头,但没有响应正文)、PUT(获取请求正文并将其内容存储在发出 PUT 请求的任何 URL 中)和DELETE(删除指定 URL 中存在的任何资源)。 REST 接口简单地利用这些附加动词将请求的含义传达给服务器。
浏览器通常只支持“正常”(非 XHR)请求的 GET 和 POST,但像 Curl 这样的工具可以发出全套 HTTP 动词。您还可以通过基于 XHR 的技术(例如 AJAX)使用附加动词。
您仍然需要提供传统的非 REST API 供浏览器使用,除非您要求 javascript 和 XHR 支持使用您的应用程序。
【讨论】:
REST 主要是指按照预期的方式使用 HTTP 协议。在 URL 上使用 GET HTTP 方法来检索信息,可能基于 HTTP Accept 标头以不同的格式。使用POST HTTP 方法在服务器上创建新项目,PUT 编辑现有项目,DELETE 删除它们。使 API 具有幂等性,即使用相同的信息重复相同的查询应该会产生相同的结果。以分层方式等方式构建您的 URL。
REST 只是如何使用 URL 和 HTTP 协议来构建 API 的指导原则。它没有说明返回格式,也可能是 JSON。
这与将二进制或 XML 消息发送到指定端口的 API 完全相反,根本不使用 HTTP 方法或 URL 的差异。
【讨论】: