本质:一种软件架构风格
核心:面向资源
解决的问题:
1、降低开发的复杂性
2、提高系统的可伸缩性
设计概念和准则
1、网络上的所有事物都可以被抽象为资源
2、每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识
3、所有操作都是无状态的
什么是资源?
网络上的一个实体,或者说是网络上的一个具体信息,文本、图片、音频、视频
二、restfulAPI是基于http协议的一种实现
http协议是一个属于应用层的协议,特点是简捷、快速。
schema://host[:port]/path[?query-string][#anchor]
schema:指定低层使用的协议(例如:http,https,ftp)
host:服务器的IP地址或者域名
port:服务器端口,默认为80,https的端口为443
path:访问资源的路径
query-string:发送给http服务器的数据(查询字符串)
anchor:锚,在一个页面里需要定位到特定的段落时用到锚点
组成格式:请求行、消息报头、请求正文
请求行:格式如下:Method Request-URI HTTP-Version CRLF
举例:GET/HTTP/1.1 CRLF
请求方法:
GET:请求获取Request-URI所标识的资源
POST:在REquest-URI所标识的资源后附加新的数据
HEAD:请求获取由Reauest-URI所标识的资源的响应消息报头
PUT:请求服务器存储一个资源,并用Request-URI作为其标识
DELETE:请求服务器删除Request-URI所标识的资源
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
HTTP协议-响应
组成格式:状态行、消息报头、响应正文
状态行
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP/1.1 200 OK
常用状态吗:
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求
restful架构与其他架构的区别