欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

浅谈RESTful

程序员文章站 2024-03-25 19:34:28
...

RESTful

1、RESTful是什么?

​ REST(representational state transfer)译为表现层状态转化或表述性状态转移,是WEB服务的一种架构风格,它使用HTTP、URI、JSON、XML、HTML等广泛流行的标准和协议。如果一个架构符合REST原则,就称它为为RESTful架构。

2、资源

​ REST的名称“表现层状态转化”,其实是省略了主语的,“表现层”实际上指的是“资源”(Resources)的“表现层”。

​ 资源就是网络上的一个实体,或者说是网络上的一个具体信息。可以是一段文本、一张图片、一首歌曲等等,总之就是一个具体的、实实在在存在的东西。你可以用一个URI(统一资源标识符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每个资源的地址或独一无二的识别符。

3、表现层

​ “资源”是一种信息实体,它可以有多种外在表现形式。“资源”具体呈现出来的形式,则叫做它的“表现层”(Representation)。

​ 比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式。

4、状态转化

​ 访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必会设计到数据和状态的变化。

​ 互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是”表现层状态转化“。

​ 客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。他们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用来更新资源),PUT用来更新资源,DELETE用来删除资源。

5、为什么会出现RESTful

​ 在出现RESTful之前我们的CRUD操作:

http://127.0.0.1/user/query/1	 //GET 根据用户id查询用户数据
http://127.0.0.1/user/save 		 //POST 新增用户
http://127.0.0.1/user/update	 //POST 修改用户信息
http://127.0.0.1/user/delete	 //GET/POST 删除用户信息

​ RESTful用法:

http://127.0.0.1/user/1	 //GET 根据用户id查询用户数据
http://127.0.0.1/user 	 //POST 新增用户
http://127.0.0.1/user	 //POST 修改用户信息
http://127.0.0.1/user	 //GET/POST 删除用户信息

​ 两者看起来并没有什么区别,但实际上原本的操作每次请求接口或者地址,都在做描述,例如查询的时候用了query,新增的时候用了save,其实完全没有这个必要,因为使用了GET请求,就是查询了,使用了POST请求,就是新增的请求,意图很明显,完全没有必要做描述,这就是为什么有了RESTful。

6、RESTful原则条件?

​ 网络上所有事务都被抽象为资源,每个资源都有一个唯一的资源标识符,同一个资源具有多种表现形式(XML、JSON等),对资源的各种操作不会改变资源标识符,所有的操作都是无状态的。

​ 在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的”集合“(collection),所以API中的名词也应该使用复数。RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构。

​ WEB应用程序最重要的REST原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必须的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

​ 在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用URI得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的HTTP方法,比如GET、PUT、POST和DELETE。

7、HTTP状态码都有哪些?

2 开头状态码

​ 2XX(成功)表示成功处理的请求的状态码。

​ 200(成功)服务器已经成功处理了请求。

3 开头状态码

​ 3XX(重定向)表示要完成请求,需要进一步操作。通常,这些代码用来重定向。

​ 304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

4 开头状态码

​ 4XX(请求错误)这些状态码表示请求可能出错,妨碍了服务器的处理。

​ 400(错误请求)服务器不理解请求的语法。

​ 403(禁止)服务器拒绝请求。

​ 404(未找到)服务器找不到请求的网页。

5 开头状态码

​ 5XX(服务器错误)这些状态码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

​ 500(服务器内部错误)服务器遇到错误,无法完成请求。

​ 501(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回代码。

​ 502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。

​ 503(服务器不可用)服务器目前无法使用(由于超载或停机维护)。通常,只是暂时状态。

​ 504(网关超时)服务器作为网关或代理,但没有及时从上游服务器收到请求。

​ 503(服务器不可用)服务器目前无法使用(由于超载或停机维护)。通常,只是暂时状态。

​ 504(网关超时)服务器作为网关或代理,但没有及时从上游服务器收到请求。

​ 505(HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本。

相关标签: RESTful