有了url,mimetype、状态码, 能够基本满足用户的需求,但是,很多时候一个网站不单纯只是不断从服务端获取资源并做渲染,可能还需要做一些数据的提交、删除等功能。所以浏览器定义了8种方法来表示对于不同请求的操作方式,当然最常用的还是Get和Post,我觉得,要不是
Get方法不支持大数据的传输,估计很多同学Post都不会去使用。
GET:一般是用于客户端发送一个URI地址去获取服务端的资源(一般用于查询操作),Get不支持的传输数据有限制,具体限制由浏览器决定
POST:一般用户客户端传输一个实体给到服务端,让服务端去保存(一般用于创建操作)
PUT:向服务器发送数据,一般用于更新数据的操作
DELETE:客户端发起一个Delete请求要求服务端把某个数据删除(一般用于删除操作)
HEAD:获得报文首部、
OPTIONS:询问支持的方法、
TRACE:追踪路径、
CONNECT:用隧道协议连接代理
在REST架构风格中,有严格规定对于不同的请求类型要设置合适的请求方法。也是避免出现因为乱用导致混乱的问题。这里提到了REST架构,现在很多同学都在写REST,有没有人能够明白为什么要定义REST这个架构风格?
我个人认为是这样
1. 随着服务化架构的普及,http协议的使用频率越来越高
2. 很多人在错误的使用http协议定义接口,比如各种各样的命名,什么getUserInfoById,deleteById之类的、有状态和无状态请求混用。
3. 对于http协议本身提供的规则并没有很好的利用
所以,为了更好的解决这些问题,干脆就定义一套规则,这套规则并没有引入新的东西,无非就是对http协议本身的使用做了一些约束,比如说
1. REST是面向资源,每一个URI代表一个资源
2. 强调无状态化,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他请求中使用
3. 强调URL暴露资源时,不要在URI中出现动词
4. 合理的利用http状态码、请求方法。
因此大家在参照这种标准去使用REST风格时,要明白你遵循的是什么以及要解决什么问题。