Web services REST调用和URL之间的区别

Web services REST调用和URL之间的区别,web-services,rest,url,url-rewriting,Web Services,Rest,Url,Url Rewriting,从某个时候起,我就开始从事网络开发。但最近遇到了一种古老的技术,REST。我读了很多关于REST调用的地方,我对REST服务的理解是 REST服务使用JSON或XML数据进行响应,这些数据可以在客户端用于呈现DOM元素 它增强了HTTP协议的使用 REST调用与正常URL调用之间的URL差异为: REST调用:www.xyz.com/getCart/12 URL:wwww.xyz.com/getCart.php?cartId=12 我得到了基本的区别,点击URL会在服务器端呈现一个页面并返回

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

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

  • 它增强了
    HTTP
    协议的使用

  • REST
    调用与正常
    URL
    调用之间的URL差异为:

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

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

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

我的问题是:

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


REST
调用的配置如何不同于普通的
url

REST更加强调动词,如
GET
PUT
POST
。。。您可以调用一个方法,如

/api/Customers
根据你使用的动词,它将执行get、post、put或delete。您还可以制作更简单的URL,如

/api/Customers/{id}/Orders/{id}
而不是制定一个

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

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

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

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

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


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

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

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

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

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

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

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

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

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


RESTAPI是使用HTTP方法构建web API的标准化体系结构。

我知道这一部分。但是你可以很容易地处理这部分。它是否对应用程序的配置进行了任何更改?据我所知,Java在部署WAR文件时负责这一部分,但您如何在php文件中配置相同的部分?我不是一个真正的php程序员,但这可能会有所帮助。虽然我同意没有技术上的区别,但我不同意REST定义了任何关于URL语义的东西,而不是只引用一个资源的原子标识符。总体而言,拥有经过深思熟虑的URL是一个很好的设计实践,但它与REST没有直接关系。通常,当人们认为URL语义对REST很重要时,他们没有使用HATEOAS,这意味着他们根本没有使用REST。你说得对,这是我想说的“需要有代表性”,但英语不是我的母语:/。谢谢你的更正。我有点明白你的意思。我想这是对的。。但是为REST和URL配置应用程序之间有什么区别吗?没有区别。是一样的。每个有效的URL在REST中也是有效的,只要它只引用一个资源。我的意思是,REST的文件结构和普通URL之间有什么区别吗。。我们如何接收休息电话。我确信我们没有和URL一样的文件夹结构,没有RESTURL和普通URL。从REST的角度来看,URL的内容是不相关的。你看到的是没有区别的地方。HTTP API中的URL采用了一些约定