RESTful编程到底是什么?


当前回答

RESTful(代表性状态转移)API编程是通过以下5个基本的软件架构风格原则,以任何编程语言编写web应用程序:

资源(数据、信息)。唯一的全局标识符(所有资源都由URI标识)。统一接口-使用简单标准接口(HTTP)。表示-所有通信都是通过表示(例如XML/JSON)完成的无状态(每个请求都是在完全隔离的情况下发生的,这样更容易缓存和负载平衡),

换句话说,您正在通过HTTP编写简单的点对点网络应用程序,该应用程序通过实现RESTful架构使用GET、POST、PUT或DELETE等动词,该架构提出了每个“资源”公开的接口的标准化。以一种简单有效的方式(高度成功、经过验证和分布式架构)使用web的当前特性并不重要。它是SOAP、CORBA和RPC等更复杂机制的替代方案。

RESTful编程符合Web体系结构设计,如果实现得当,它允许您充分利用可扩展的Web基础设施。

其他回答

REST是一种分布式系统(如WWW)软件架构风格,您可以想象它是一个精心设计的Web应用程序规则:一组Internet网页(一个虚拟状态机),其中通过单击链接(状态转换)进行超链接,结果是下一个网页(这意味着应用程序的下一个状态)。

REST描述了网络系统由三部分组成:

数据元素(资源、资源标识符、表示)连接器(客户端、服务器、缓存、解析器、隧道)组件(源服务器、网关、代理、用户代理)

REST严格满足以下条件:

应用程序功能的状态被划分为资源用作超链接定位语法的每个资源(例如,在WWW URI中)所有资源在具有资源转换状态的客户端之间共享统一接口,包括:有限的一组定义良好的操作(如HTTPGET/POST/PUT/DELETE)一组有限的内容格式内容类型,可能包括可执行代码(例如,在WWW Javascript中)

我想说,理解REST的一个重要组成部分在于端点或映射,例如/customers/{id}/balance。

您可以将这样的端点想象为从网站(前端)到数据库/服务器(后端)的连接管道。使用它们,前端可以执行在应用程序中任何REST映射的相应方法中定义的后端操作。

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

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

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

我看到了一堆回答,说将用户123的所有内容放在资源“/user/123”是RESTful的。

罗伊·菲尔丁(Roy Fielding)创造了这个术语,他表示RESTAPI必须是超文本驱动的。特别是,“REST API不能定义固定的资源名称或层次结构”。

因此,如果您的“/user/123”路径在客户端上被硬编码,那么它就不是真正的RESTful。很好地使用HTTP,也许,也许不是。但不是RESTful。它必须来自超文本。

什么是REST?

用官方的话说,REST是一种基于使用当前“Web”基础的特定原则构建的架构风格。web有5个基本基础,可用于创建REST服务。

原则1:一切都是资源在REST体系结构风格中,数据和功能被视为资源,并使用统一资源标识符(URI)(通常是Web上的链接)进行访问。原则2:每个资源都由唯一标识符(URI)标识原则3:使用简单统一的接口原则4:通过代表进行沟通原则5:无状态