REST调用和URL之间的区别

时间:2014-06-03 12:31:17

标签: web-services rest url url-rewriting

我从某个时候开始从事网络开发。但最近遇到了一项旧技术REST。我阅读了有关REST来电的各个地方,我对REST服务的了解是,

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

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

  • REST来电与正常URL之间的网址差异为:

    REST CALL wwww.xyz.com/getCart/12

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

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

我的问题是:

如果我将.php页面设为JSON字符串,则应用程序会AJAX调用php页面以获取JSON回复并在客户端使用它来呈现DOM,那么REST通话和普通URL通话之间有什么区别。?

REST来电的配置与普通URLs的配置方式有何不同?

4 个答案:

答案 0 :(得分:5)

有很多关于REST的错误信息和混淆。我从这些可以获得的信息中理解这三点并不奇怪,但这些都是错误的。

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

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

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

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

答案 1 :(得分:2)

休息更强调动词,例如GETPUTPOST ...你可以调用一个方法,如

/api/Customers

根据您使用的动词,它将执行get,post,put或delete。您还可以制作更简单的网址

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

而不是制作一个

的方法
api/GetCustomersOrders?id=x&id=y. 

答案 2 :(得分:1)

REST只是一种架构风格,没有技术差异。

REST定义的一件事是您的URL需要是仅引用一个资源的原子标识符。

  

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

     

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

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

答案 3 :(得分:1)

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

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

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

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