-
1、restful是基于资源的,面向资源架构风格(一个链接,一张图、一个文本等等)
-
2、restful的http协议
-
2.1 url:
-
2.1.1 port 服务端口,默认为80
-
2.1.2 path 访问资源的路径
-
2.1.3 query-string 发送给http服务器的数据
-
2.1.4 anchor 锚
-
-
2.2 请求 组成格式:请求行、消息报头、请求正文
-
请求行格式: Method Request-URI HTTP-Version CRLF
-
例子: GET / HTTP/1.1 CRLF
-
-
2.3请求方法
-
GET :请求获取Request-URI的所表示的资源
-
POST :在Request-URI所标识的资源后附加新的数据
-
HEAD :请求获取由Request-URI所标识的资源的相应消息包头
-
PUT : 请求服务器存储一个资源,并用Request-URI作为其标识
-
DELETE :请求服务器删除Request-URI所表示的资源
-
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项请求
-
-
2.4 响应 组成格式:状态行、消息报头、响应正文
-
状态行格式 : HTTP-Version Status-Code Reason-PhRase CRLF
-
例子:HTTP/1.1 200 OK
-
-
2.5 常用状态码
-
200 ok //客户端请求成功
-
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
-
401 Unauthorized //服务器收到请求,但是拒绝提供服务,需要授权访问
-
404 Not Found //请求资源不存在
-
500 Internal Server Error //服务器发生不可预期的错误
-
503 Server Unavailable //服务器当前不能处理客户端请求,一般服务器达到性能瓶颈拒绝服务
-
-
3、如何设计RESTful API
-
-
3.1 资源路径(URI)
-
概念:在RESTful架构中,每个网址代表一种资源,所以网址中不能有动词,只能用名词。一般来说API中的名词应该使用复数
-
举例:有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样
-
https://api.example.com/v1/zoos //动物园资源
-
https://api.example.com/v1/animals/2 //动物园资源
-
-
3.2 HTTP动词
-
概念:对于资源的操作(CURD),由HTTP动词表示
-
GET:从服务器获取资源(一项或多项)
-
POST:在服务器新建一个资源
-
PUT:在服务器更新资源(客户端提供改变后的完整资源)
-
PATCH:在服务器更新资源(客户端提供改变的属性)【注意】:这个不常用,更新一般都用PUT,用PUT更新会返回所有字段,而用PATCH更新只会返回更新的字段
-
DELETE:从服务器删除一个数据
-
-
举例:
-
POST /zoos:新建一个动物园
-
GET /zoos/ID:获取某个指定动物园的信息
-
PUT /zoos/ID:更新某个指定动物园的信息
-
DELETE /zoos/ID:删除某个动物园
-
-
-
3.3 过滤信息
-
概念:如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果
-
举例:
-
?offset=10:制定返回记录的开始位置
-
?page=2&per_page=100:制定第几页,以及每页的记录数
-
?sortby=name&order=asc:制定返回结果排序,以及排序顺序
-
?animal_type_id=1:制定筛选条件
-
-
3.4 状态码
-
200 ok 服务器成功返回用户请求的数据,该操作是幂等的
-
201 CREATED 新建或修改数据成功
-
204 NO CONTNET 删除数据成功
-
400 BAD REQUEST 用户发出的请求有错误,该操作是幂等
-
401 Unauthorized 表示拥护没有认证,无法进行当前操作
-
403 Forbidden 表示拥护访问时被禁止的
-
422 Unprocesable Entity 当创建一个对象时,发生一个验证错误
-
500 INTERNAL SERVER ERROR 服务器发生错误,用户将无法判断发出的请求是否成功
-
-
3.5 错误处理
-
概念:如果状态码是4xx或者5xx,就应该像用户返回错误信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可
-
{
-
'error' : '参数错误'
-
}
-
-
3.6 返回结果
-
针对不同操作,服务器向用户返回的结果应该符合以下规范:
-
GET /collections:返回资源对象的列表(数组)
-
GET /collections/identity:返回单个资源对象
-
POST /collections:返回新生成的资源对象
-
PUT /collections/identity:返回完整的资源对象
-
PATCH /collections/identity :返回被修改的属性
-
DELETE /collections/identity : 返回一个空文档
-
-
-
4、google商店搜索restful api client找到 Restlet Client-REST API Testing,安装调试restful工具
-
-
-
5、项目实例
-
-
项目需求:用户登陆、注册
-
文章发表、编辑、管理、列表
-
分析资源:用户(user) 、文章(article)
-
资源路径:/user 、 /article
-
HTTP动词:POST、GET、PUT、DELETE
-
过滤信息:文章分页筛选
-
状态码:200、404、422、403
-
错误处理:输出json格式错误信息
-
返回结果:输出json数组或者json对象
https://blog.csdn.net/jj546630576/article/details/77948445
评论(0)