关于Web服务:REST调用与URL之间的区别

Difference between REST call and URL

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

  • REST服务使用JSONXML数据进行响应,这些数据可在客户端用于呈现DOM元素。

  • 它增强了HTTP协议的使用。

  • REST调用和普通URL之间的URL差异为:

    REST CALL:wwww.xyz.com/getCart/12

    URL:wwww.xyz.com/getCart.php?cartId=12

我有基本的区别,点击URL会在服务器端渲染一个页面并返回响应,而对REST服务进行AJAX调用只会返回JSONXML输出可以在客户端进行解析。

我的问题是:

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

REST呼叫的配置与正常的URLs有何不同?


关于REST有很多误解和困惑。从现有信息中了解这三点并不奇怪,但是它们是错误的。

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

  • 以相同的方式,尽管REST通常与HTTP相混淆,但REST并未与任何特定协议耦合。同样,遵循统一的接口,对于具有有效URI方案的任何协议,客户端应该能够遵循服务器提供的任何链接。

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

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


REST只是一种建筑风格,没有技术差异。

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

GET /users/:id (return the user with the given :id)

PUT /users/:id (update the user with the given :id)

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


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

1
/api/Customers

,根据您使用的动词,它会进行获取,发布,放置或删除。您还可以使URL更简单,例如

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

而不是创建将是

的方法

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


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

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

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

REST API是用于使用HTTP方法构建Web API的标准化体系结构。