RESTful编程到底是什么?


当前回答

为了在这里贡献一些新的东西,我想分享我文章中的链接,即通过一种实用和客观的方法将REST概念化。

我将介绍以下主要概念:

HATEOAS-超媒体作为应用程序状态的引擎,资源和表示,可寻址性,REST中的幂等性,Richardson的REST成熟度模型。媒体类型API版本控制

我还创建了一个GitHub项目,您可以使用docker轻松运行,它涵盖了我在本文中介绍的内容。

https://itnext.io/how-to-build-a-restful-api-a-deep-dive-into-rest-apis-215188f80854

其他回答

这就是它可能看起来的样子。

创建具有三个财产的用户:

POST /user
fname=John&lname=Doe&age=25

服务器响应:

200 OK
Location: /user/123

以后,您可以检索用户信息:

GET /user/123

服务器响应:

200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>

要修改记录(姓名和年龄将保持不变):

PATCH /user/123
fname=Johnny

要更新记录(因此lname和age将为NULL):

PUT /user/123
fname=Johnny

剩下的一点是,如果我们同意对基本操作使用通用语言(http动词),那么可以配置基础结构来理解它们并适当地优化它们,例如,通过使用缓存头在所有级别实现缓存。

通过正确实现的restful GET操作,信息来自服务器的DB、服务器的memcache、CDN、代理的缓存、浏览器的缓存或浏览器的本地存储都无关紧要。可以使用最快、最容易获得的最新来源。

说Rest只是语法上的改变,从使用带有动作参数的GET请求到使用可用的http动词,这看起来没有任何好处,而且纯粹是修饰。重点是使用一种可以被链的每个部分理解和优化的语言。如果GET操作有副作用,则必须跳过所有HTTP缓存,否则结果将不一致。

本质上没有“RESTful编程”这样的概念。它最好被称为RESTful范式,甚至更好的RESTful架构。它不是一种编程语言。这是一个范例。

来自维基百科:

在计算中,表示状态转移(REST)是一种用于web开发的体系结构风格。

REST定义了6个体系结构约束,使任何web服务都成为真正的RESTful API。

统一接口客户端-服务器无国籍的可缓存的分层系统按需编码(可选)

https://restfulapi.net/rest-architectural-constraints/

REST是一种编写分布式应用程序的架构模式和风格。它不是狭义的编程风格。

说你使用REST风格类似于说你建造了一个特定风格的房子:例如都铎风格或维多利亚风格。REST作为一种软件风格,都铎或维多利亚风格作为一种家居风格,都可以通过构成它们的质量和约束来定义。例如,REST必须具有客户端-服务器分离,其中消息是自我描述的。都铎风格的房屋有重叠的山墙和屋顶,这些山墙和前面的山墙陡峭倾斜。您可以阅读Roy的论文,以了解更多关于构成REST的约束和质量的信息。

与家庭风格不同的REST在持续和实际应用中遇到了困难。这可能是故意的。将其实际实现留给设计者。所以你可以自由地做你想做的事情,只要你满足论文中提出的约束条件,你就可以创建REST系统。

奖金:

整个web都基于REST(或REST基于web)。因此,作为一名web开发人员,您可能需要意识到这一点,尽管编写好的web应用程序并不必要。