什么是restful

394 阅读3分钟

简述:

REST,即“表现层状态转化”,是一种软件架构风格。实际上,REST只是一种软件架构风格。它并不是一种具体的技术。而更像是一种约束与规范的东西,它包含了很多原则与限制。如果一个架构符合REST的原则,就可以称它为RESTful架构。

RESTful API就是REST风格的API。它使用URI来描述资源,使用Html、Json等格式表现,通过HTTP动词来操作资源来实现状态转化,使用HTTP状态码反映处理结果。

特征:

1)以资源为基础:网络上任何一个实体,可以是一个图片、json、html格式

2)统一接口,显示地使用不同的方法请求:URI定位资源,对资源的增删改查通过相应的动作进行

3)无状态:服务器不能保存客户端的信息,每一次从客户端发送的请求,必须要包含所有必须的状态信息

RESTful API设计规范:

1.首先通过URI定位资源

URL = scheme "://" host ":" port "/" path [ "?" query ]

path通常是 /{version}/{resources}/{resource_id}

1)version:API版本号,有利于迭代

2)resources:资源,推荐用小写英文单词的复数形式

3)resource_id:资源的id,访问或者操作该资源

2.显示地使用不同的HTTP请求方法:

在REST架构中,使用不同的方法来处理对资源的CRUD操作

GET、POST、PUT、DELETE、HEAD、OPTION

3.状态码

200:请求成功

301:临时重定向

302:永久重定向

304:当用户第一次请求index.html时,服务器会添加一个名为Last-Modified响应头,这个头说明了index.html的最后修改时间,浏览器会把index.html内容,以及最后响应时间缓存下来。当用户第二次请求index.html时,在请求中包含一个名为If-Modified-Since请求头,它的值就是第一次请求时服务器通过Last-Modified响应头发送给浏览器的值,即index.html最后的修改时间,If-Modified-Since请求头就是在告诉服务器,我这里浏览器缓存的index.html最后修改时间是这个,您看看现在的index.html最后修改时间是不是这个,如果还是,那么您就不用再响应这个index.html内容了,我会把缓存的内容直接显示出来。而服务器端会获取If-Modified-Since值,与index.html的当前最后修改时间比对,如果相同,服务器会发响应码304,表示index.html与浏览器上次缓存的相同,无需再次发送(节省传输成本)浏览器可以显示自己的缓存页面,如果比对不同,那么说明index.html已经做了修改,服务器会响应200。

403:禁止访问

404:找不到资源

500:请求资源找到了,但服务器内部出现了错误;

502:Bad Gateway,后端应用挂了。

504:Gateway timeout,网关超时,一般指nginx做反向代理服务器。

从网络角度看,502已经与后端建立了连接,但超时;504与后端连接未建立,超时。

4.post提交数据类型

1)application/json,这是最常见的 {"input1":"xxx","input2":"ooo","remember":false}

2)application/x-www-form-urlencoded,浏览器的原生form表单,如果不设置enctype属性,那么最终就会以这种方式提交

3)multipart/form-data,既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息,它采用了键值对的方式,所以可以上传多个文件

4)raw,可以上传任意格式的文本,可以上传text、json、xml、html