RESTful编程到底是什么?
当前回答
这在任何地方都很少被提及,但Richardson的成熟度模型是实际判断Restful是API的最佳方法之一。更多信息请点击此处:
理查德森成熟度模型
其他回答
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
REST==HTTP类比是不正确的,除非你不强调它“必须”是HATEOAS驱动的。
罗伊自己在这里清除了它。
输入REST API时,除了初始URI(书签)和适用于预期受众的一组标准化媒体类型(即,预期任何可能使用该API的客户端都能理解)之外,不应有任何先验知识。从那时起,所有应用程序状态转换都必须由客户端选择服务器提供的选择来驱动,这些选择出现在接收的表示中,或者由用户对这些表示的操作来暗示。转换可以由客户端对媒体类型和资源通信机制的知识来确定(或限制),这两者都可以动态地改进(例如,按需编码)。
[这里的失败意味着带外信息正在驱动交互,而不是超文本。]
为了在这里贡献一些新的东西,我想分享我文章中的链接,即通过一种实用和客观的方法将REST概念化。
我将介绍以下主要概念:
HATEOAS-超媒体作为应用程序状态的引擎,资源和表示,可寻址性,REST中的幂等性,Richardson的REST成熟度模型。媒体类型API版本控制
我还创建了一个GitHub项目,您可以使用docker轻松运行,它涵盖了我在本文中介绍的内容。
https://itnext.io/how-to-build-a-restful-api-a-deep-dive-into-rest-apis-215188f80854
我看到了一堆回答,说将用户123的所有内容放在资源“/user/123”是RESTful的。
罗伊·菲尔丁(Roy Fielding)创造了这个术语,他表示RESTAPI必须是超文本驱动的。特别是,“REST API不能定义固定的资源名称或层次结构”。
因此,如果您的“/user/123”路径在客户端上被硬编码,那么它就不是真正的RESTful。很好地使用HTTP,也许,也许不是。但不是RESTful。它必须来自超文本。
REST定义了6个体系结构约束,使任何web服务都成为真正的RESTful API。
统一接口客户端-服务器无国籍的可缓存的分层系统按需编码(可选)
https://restfulapi.net/rest-architectural-constraints/
推荐文章
- Symfony 2.x中的所有东西都应该捆绑吗?
- 用Spring我可以做一个可选的路径变量吗?
- 什么是HTTP“主机”报头?
- 用Python构建最小的插件架构
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- Django REST框架:向ModelSerializer添加额外字段
- 如何阻止恶意代码欺骗“Origin”报头来利用CORS?
- 模式、表和数据库之间的区别是什么?
- 为什么说“HTTP是无状态协议”?
- 我需要HTTP GET请求的内容类型报头吗?
- REST和RPC之间的Web服务差异
- 单页应用:优点和缺点
- 如何让Chrome允许混合内容?
- 正确的方式删除cookies服务器端
- REST DELETE真的是幂等的吗?