**Rest ful**
本质:
1.一种软件架构风格;
核心:
1.面向资源;
解决的问题:
1.降低开发的复杂性;
2.提高系统的可伸缩性;
设计概念和准则:
1.网络上的所有事物都可以被抽象为资源;
2.每一个资源都有唯一的资源表示,对资源的操作不会改变这些表示;
3.所有操作都是无状态的;
资源(什么是资源):
1.“资源”,就是网络上的一个实体,或者说是网络上的一个具体信息;
HTTP协议-请求
请求方式
1.GET 其你去获取request- url 所表示的资源(获取资源);
2.POST 在request-url所标识的资源后附加新的数据(向服务器发送数据);
3.HEAD 请求获取有request-url所标识的资源的响应消息报头();
4.PUT 请求服务器存储一个资源,并用request-url作为其标识(客户端提供改变后的资源);
5.DELETE 请求服务器删除request-url所标识的资源(从服务器删除资源);
6.OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求(对资源的操作);
7.PATCH 在服务器更新资源(客户端提供改变的属性 )
HTTP协议-响应
组成格式:
状态行,消息报头,响应正文;
状态行:
HTTP-Version Status-Code Reason-Phrase CRLF
HTTO/1.1 200 OK(代表请求成功)
常用状态码:
- 200 ok //客户端请求成功
- 400Bad Requestrian //客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized //服务器收到请求,但是拒绝提供服务
4、301 Moved Permanently:资源的uri已更新,你也更新下你的书签引用吧。永久性重定向,请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。
5、302 Found:资源的URI已临时定位到其他位置了,姑且算你已经知道了这个情况了。临时性重定向。和301相似,但302代表的资源不是永久性移动,只是临时性性质的。换句话说,已移动的资源对应的URI将来还有可能发生改变。
6、303 See Other:资源的URI已更新,你是否能临时按新的URI访问。该状态码表示由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源。303状态码和302状态码有着相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源,这点与302状态码有区别。
当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。
7. 403 Forbidden:不允许访问那个资源。该状态码表明对请求资源的访问被服务器拒绝了。(权限,未授权IP等)
8. 404 Not Found:服务器上没有请求的资源。路径错误等
5开头都是服务器错误
9、500 Internal Server Error:貌似内部资源出故障了。该状态码表明服务器端在执行请求时发生了错误。也有可能是web应用存在bug或某些临时故障。
10、503 Service Unavailable:抱歉,我现在正在忙着。该状态码表明服务器暂时处于超负载或正在停机维护,现在无法处理请求。
————————————————
原文链接:https://blog.youkuaiyun.com/qq_35689573/article/details/82120851
RESTful架构与其他架构的区别
SOAP WebService:
1.WebService是一种跨变成语言和跨操作系统平台的远程调用技术。
效率和易用性:
SOAP 不断扩充协议内容,处理性能下降,易用性增加
RESTful 最大限度利用http最初的协议 相对安全要求不高的场景 不如SOAP安全性能好。
如何设计RESTful API
资源路径(url https比http相对安全)
HTTP动词(请求方式GET POST…)
1.对于资源的操作(CURD),由HTTP动词(谓词)标识
2.GET 其你去获取request- url 所表示的资源(获取资源);
3.POST 在request-url所标识的资源后附加新的数据(向服务器发送数据);
4.HEAD 请求获取有request-url所标识的资源的响应消息报头();
5.PUT 请求服务器存储一个资源,并用request-url作为其标识(客户端提供改变后的资源);
6.DELETE 请求服务器删除request-url所标识的资源(从服务器删除资源);
7.OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求(对资源的操作);
8.PATCH 在服务器更新资源(客户端提供改变的属性 )
过滤信息(不要有过多的查询条件):
1.如果记录数量很多,服务器不可能都将他们返回给用户。API应该提供参数,过滤返回结果
状态码
1.服务器想用户返回的状态码和提示信息,使用标准的HTTP状态码
401没有提供任何的认证
403用户访问是被禁止的
422 创建对象时,发证一个验证错误(如账号密码 只有一个)
错误处理
1.如果状态码是4xx或5xx,就应该想用户返回出错信息。
一般来说,返回的信息中将error作为键名,出错信息作为键值即可
{
“error”:“参数错误”
}
返回结果
1.针对不用操作,服务器向用户返回的结果应该符合以下规范:
·GET/conllections :返回资源对象的列表(数组)
·GET/conllections/identity :返回单个资源对象
·POST /collections :返回新生成的资源对象
·PUT/collections/identity :返回完整的资源对象
·PATCH/collections/idetity :返回被修改的属性
·DELETE /collections/identity:返回一个空文档