什么是Restful?
1.什么是RESTful APIREST?
即Representational State Transfer的缩写。直接翻译的意思是"表现层状态转化"。
它是一种互联网应用程序的API设计理念:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
本质:一种软件架构风格
核心: 面向资源
解决问题:.降低开发的复杂性
.提高系统的可伸缩性
设计概念和准则:.网络上的所有事物都可以被抽象为资源。
.每一个资源都有唯一的资源标识,对资源的操作不会该表这些标识。
.所有的操作都是无状态的。
什么是资源?
所谓“资源”,就是网络上的一个实体,或者说是网络上的一个具体信息。
2.HTTP协议-URL
HTTP是一个属于应用层的协议,特点是简捷、快速。
schema://host[:post]/path [?qquery-string][#anchor] (方括号里面为可选参数)
(协议头) (主机名) (请求路径)
. scheme 指定低层使用的协议(例如:http,https,ftp)(协议头参数)
. host 服务器的IP地址或者域名
. port 服务器端口,默认为80(https:端口号443)
. path 访问资源的路径
. query-string 发送给http服务器的数据
. anchor 锚
3.HTTP协议-请求
组成格式:请求行、消息报头、请求正文
请求行:
格式如下:Method Request-URL HTTP-Version CRLF
举例: GET/HTTP1.1 CRLF
请求方法:
.GET :请求获取Request-URL所标识的资源
.POST 在Request-URl所标识的资源后附加新的数据
.HEAD 请求获取由Request-URL所标识的资源的响应消息报头
.PUT 请求服务器存储一个资源,并用Request-URl作为其标识
.DELETE 请求服务器删除Request-URl所标识的资源
.OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
4.HTTP协议-响应
组成 格式:状态行、消息报头 、响应正文
状态行:HTTP-Version Status-Code Reason-Phrase CRLF
HTTP/1.1 200 ok
常用状态码:
.200 ok //客户端请求成功
.400 Bad Request //客户端请求有语法错误,不能被服务器所理解
.401 Unauthorized //服务器收到请求,但是拒绝提供服务
.400 Not Found //请求资源不存在
.500 Internal Server Error //服务器发生不可预期的错误
.503 Server Unavailable //服务器当前不能处理客户端的请求
5.如何设计RESTFUL API
资源路径(url),HTTP动词 ,过滤信息,状态码,错误处理,返回结果
资源路径:在RESTFUL架构中,每个网址代表一种资源,所以网址中不能有动 词,只能有名词。一般来说API中的名词应该使用复数。
HTTP动词
常用的HTTP动词有下面五个
*
GET(SELECT):从服务器取出资源(一项或多项)。
*
POST(CREATE):在服务器新建一个资源。
*
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
*
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
*
DELETE(DELETE):从服务器删除资源
例子:
*
POST /zoos:新建一个动物园
*
GET /zoos/ID:获取某个指定动物园的信息
*
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
*
PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
*
DELETE /zoos/ID:删除某个动物园
*
GET /zoos/ID/animals:列出某个指定动物园的所有动物
*
DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
*
过滤信息:
例子:
*
?limit=10:指定返回记录的数量
*
?offset=10:指定返回记录的开始位置。
*
?page=2&per_page=100:指定第几页,以及每页的记录数。
*
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
*
?animal_type_id=1:指定筛选条件
返回结果:
*
GET /collection:返回资源对象的列表(数组)
*
GET /collection/identity:返回单个资源对象
*
POST /collection:返回新生成的资源对象
*
PUT /collection/resource:返回完整的资源对象
*
PATCH /collection/resource:返回完整的资源对象
*
DELETE /collection/resource:返回一个空文档
上一篇: 什么是Restful风格
下一篇: go里面的switch