RESTful编程到底是什么?
当前回答
REST使用各种HTTP方法(主要是GET/PUT/DELETE)来处理数据。
您不需要使用特定的URL来删除方法(例如/user/123/delete),而是向/user/[id]URL发送delete请求,以编辑用户,检索有关向/user/[id]发送GET请求的用户的信息
例如,取而代之的是一组URL,可能看起来像下面的一些。。
GET /delete_user.x?id=123
GET /user/delete
GET /new_user.x
GET /user/new
GET /user?id=1
GET /user/id/1
您使用HTTP“动词”并具有。。
GET /user/2
DELETE /user/2
PUT /user
其他回答
我看到了一堆回答,说将用户123的所有内容放在资源“/user/123”是RESTful的。
罗伊·菲尔丁(Roy Fielding)创造了这个术语,他表示RESTAPI必须是超文本驱动的。特别是,“REST API不能定义固定的资源名称或层次结构”。
因此,如果您的“/user/123”路径在客户端上被硬编码,那么它就不是真正的RESTful。很好地使用HTTP,也许,也许不是。但不是RESTful。它必须来自超文本。
一本关于REST的好书是《实践中的REST》。
必须读取代表性状态传输(REST),并且REST API必须是超文本驱动的
有关RESTful服务的解释,请参见Martin Fowlers的文章《Richardson成熟度模型》(RMM)。
要实现RESTful,服务需要实现作为应用程序状态引擎的超媒体。(HATEOAS),也就是说,它需要达到RMM中的3级,阅读文章以了解详细信息或qcon演讲中的幻灯片。
HATEOAS约束是首字母缩略词超级媒体的引擎应用程序状态。这一原则是REST之间的关键区别以及大多数其他形式的客户端服务器系统...RESTful应用程序的客户端需要只知道要访问的单个固定URL所有未来的行动都应该可从中动态发现超媒体链接包含在资源的表示从该URL返回。标准化媒体类型也是预期任何人都能理解可能使用RESTful API的客户端。(来自免费百科全书维基百科)
Web框架的REST Litmus测试是Web框架的类似成熟度测试。
接近纯REST:学会爱HATEOAS是一个很好的链接集合。
针对公共云的REST与SOAP讨论了REST使用的当前级别。
REST和版本控制讨论了可扩展性、版本控制、可演化性等。通过可修改性
如果我没有直接回答这个问题,我很抱歉,但通过更详细的例子更容易理解这一切。由于所有的抽象和术语,字段化并不容易理解。
这里有一个很好的例子:
解释REST和超文本:垃圾邮件清理机器人Spam-E
更棒的是,这里有一个简单的例子(powerpoint更全面,但你可以在html版本中获得大部分内容):
http://www.xfront.com/REST.ppt或http://www.xfront.com/REST.html
看完这些例子后,我明白了Ken为什么说REST是超文本驱动的。但我实际上并不确定他是对的,因为/user/123是指向资源的URI,我不清楚它是否是非RESTful的,因为客户端知道它是“带外”的
xfront文档解释了REST和SOAP之间的区别,这也非常有用。当Fielding说:“这是RPC。它尖叫RPC。”时,很明显RPC不是RESTful的,所以了解这一点的确切原因很有用。(SOAP是RPC的一种类型。)
REST代表代表性状态转移。
它依赖于一个无状态的、客户端-服务器的、可缓存的通信协议——实际上在所有情况下都使用HTTP协议。
REST通常用于移动应用程序、社交网络网站、mashup工具和自动化业务流程。REST风格强调通过有限数量的操作(动词)来增强客户端和服务之间的交互。通过将资源(名词)分配给它们自己独特的通用资源指示符(URI)来提供灵活性。
休息介绍
REST定义了6个体系结构约束,使任何web服务都成为真正的RESTful API。
统一接口客户端-服务器无国籍的可缓存的分层系统按需编码(可选)
https://restfulapi.net/rest-architectural-constraints/
推荐文章
- 如何使HTTP请求在PHP和不等待响应
- PATCH和PUT请求的主要区别是什么?
- 调用webrequest, POST参数
- 我可以把我所有的http://链接都改成//吗?
- URL为AJAX请求编码一个jQuery字符串
- 编译System.Net.HttpClient的查询字符串
- 如何在PostgreSQL中查看视图的CREATE VIEW代码?
- 摘要认证和基本认证的区别是什么?
- Axios -删除请求与请求体和头?
- 如何在Spring RestTemplate请求上设置“接受:”头?
- 如何在http获取请求设置报头?
- “Layers”和“Tiers”的区别是什么?
- 如何使用Ruby on Rails进行HTTP请求?
- REST API最佳实践:查询字符串中的参数vs请求体中的参数
- 一般来说,在一个组件中使用一个还是多个useEffect钩子更好?