restful

226 阅读2分钟

本质:一种软件架构风格

核心:面向资源

解决的问题:

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架构与其他架构的区别