【问题标题】:Difference between REST call and URLREST 调用和 URL 之间的区别
【发布时间】:2014-07-23 19:02:58
【问题描述】:

我从某个时候开始从事网络开发。但是最近遇到了一个老技术,REST。我阅读了很多关于REST 调用的地方,我对REST 服务的理解是,

  • REST 服务返回 JSONXML 数据,可用于客户端渲染 DOM 元素。

  • 增强了HTTP协议的使用。

  • REST 调用和普通URL 之间的 URL 区别是:

    REST 调用wwww.xyz.com/getCart/12

    网址wwww.xyz.com/getCart.php?cartId=12

我得到了基本的区别,点击 URL 将在服务器端呈现页面并返回响应,而对 REST 服务进行 AJAX 调用只会返回 JSONXML 输出可以在客户端解析。

我的问题是:

如果我让我的.php 页面呈现JSON 字符串,并且应用程序对php 页面进行AJAX 调用以获取JSON 响应并在客户端使用它来呈现DOM,那么REST 调用和普通的URL 调用有什么区别?

REST 调用的配置与普通URLs 有何不同?

【问题讨论】:

    标签: web-services rest url url-rewriting


    【解决方案1】:

    所有 Web 服务都是 API,但并非所有 API 都是 Web 服务。

    API 是应用程序接口,意味着一个应用程序能够以标准化方式与另一个应用程序交互。

    Web 服务是一种 API,必须通过网络连接访问。

    REST API 是使用 HTTP 方法构建 Web API 的标准化架构。

    【讨论】:

      【解决方案2】:

      REST 只是一种架构风格,没有技术上的区别。

      REST 定义的其中一件事是,您的 URL 必须是仅引用一个资源的原子标识符。

      GET /users/:id (返回给定 :id 的用户)

      PUT /users/:id(使用给定的 :id 更新用户)

      Here 是关于使用框架在 php 中制作 REST API 的答案。

      【讨论】:

      • 虽然我同意技术上没有区别,但我不同意 REST 定义了关于 URL 语义的任何内容,而不是仅引用一个资源的原子标识符。总体而言,拥有经过深思熟虑的 URL 是一种很好的设计实践,但它与 REST 没有直接关系。通常,当人们认为 URL 语义对 REST 很重要时,他们并没有使用 HATEOAS,这意味着他们根本没有使用 REST。
      • 你说得对,这就是我想说的“需要有代表性”,但英语不是我的母语:/。谢谢指正。
      【解决方案3】:

      关于 REST 存在很多错误信息和混淆。这三点是您从现有信息中理解的,我并不感到惊讶,但它们是错误的。

      • REST 不与任何特定的数据格式或媒体类型耦合。 REST 中最重要的约束是强调统一接口,这意味着在这种情况下,服务器应该能够以客户端接受的任何数据格式或媒体类型进行响应。在 HTTP 下,客户端将通过 Accept 标头告诉它可以理解哪些格式,服务器应该遵守或失败并出现 406 Not Acceptable 错误。

      • 同样,REST 不与任何特定协议耦合,尽管它经常与 HTTP 复杂化。同样,遵循统一接口,客户端应该能够遵循服务器提供的任何链接,适用于具有有效 URI 方案的任何协议。

      • URL 的语义与 REST 完全无关。对 REST 而言,重要的是 URL 标识一个且只有一个资源。 URL 是一个原子标识符,客户端不应依赖其中嵌入的任何语义进行任何操作。您提供的两个示例在 REST 中均有效。它们中的任何一个都或多或少是 RESTful。

      要回答您的问题,在 REST 应用程序下,您想象的差异并不存在。点击 URL 将返回响应。如果客户端使用Accept: text/html 标头进行请求,它可能会返回要由浏览器呈现的人性化html 页面。如果客户端使用Accept: application/jsonAccept: application/xml 请求,它可能会返回机器友好的格式以供其他应用程序读取。

      【讨论】:

      • 我有点明白你的意思。我想这是正确的.. 但是为 REST 和 URL 配置应用程序有什么区别吗?
      • 没有区别。这是同一件事。每个有效的 URL 在 REST 中也是有效的,只要它只引用一个资源。
      • 我的意思是,REST 的文件结构和普通 URL 之间有什么区别.. 我们如何接收 REST 调用。我确信我们没有与 URL 相同的文件夹结构。
      • 没有 REST URL 和普通 URL 这样的东西。从 REST 的角度来看,URL 的内容是无关紧要的。你会看到一个没有区别的地方。 HTTP API 中的 URL 采用了约定,我认为这就是您所说的“文件夹结构”。从这个意义上说,你可以说 /carts/12 比 /getCart?id=12 更像 REST,但这是非常主观的。人们在无休止的争论中浪费了很多时间,但这并不重要。对于 REST,重要的是您的客户端如何获取 URL。
      【解决方案4】:

      Rest 更加强调动词,例如GETPUTPOST... 您可以调用一种方法,例如

      /api/Customers
      

      根据您使用的动词,它会执行 get、post、put 或 delete。您还可以制作更简单的 URL 像

      /api/Customers/{id}/Orders/{id}
      

      而不是制作一个方法

      api/GetCustomersOrders?id=x&id=y. 
      

      【讨论】:

      • 我知道这部分。但是您可以轻松处理这部分。它是否对应用程序的配置进行了任何更改?据我所知,Java 在部署 WAR 文件时会处理这部分内容,但是您将如何在 php 文件中进行相同的配置?
      • 我并不是真正的 PHP 程序员,但这可能会有所帮助。 code.tutsplus.com/tutorials/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2014-11-28
      • 2010-11-29
      • 1970-01-01
      相关资源
      最近更新 更多