restful总结
一.restful是什么?
本质上是一种软件架构风格,核心是面向资源去设计API
设计概念和准则
1.网络上的所有事件都可以被抽象为资源
2.每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识
3.所有的操作是无状态的
二.为什么要使用restful?
解决的问题有:
1.减低开发的复杂性
2.提高系统的可伸缩性
三.HTTP协议-URL
http 是一个属于应用层的协议,特点是简捷、快速
schema://host[:port]/path[?query-string[#anchor]
achema:指定低层使用的协议(例如:http,https,ftp)
host 服务器的IP地址或者是域名
port 服务器端口HTTP 80 HTTPS 443
path 访问资源的路径
jquery-string 发送给http服务器的数据
anchor 苗点
请求
组成格式:请求行、消息报头、请求正文
请求行
格式:method request-url HTTP-Version CRLF
举例 GET /HTTP/1.1 CRLF
请求方式
GET 请求获取Request-URL所标识的资源
POST 在Request-URL所标识的资源后附加新的资源
HEAD 请求获取由Request-URL所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URL作为其标识
DELETE请求服务器删除请求URL所标识的资源
OPTIONS 请求查询服务器的性能或者查询与资源相关的选项和需求
响应
组成格式:请求行、消息报头、请求正文
请求行
格式:HTTP-Version Status-Code Reason-Phrase CRLF
举例 HTTP/1.1 200 OK
常见CODE
200 ok
301 永久性重定向
302 临时性重定向
401 服务器收到,拒绝请求
403 没有访问权限
404 找不到页面
409 客户端没等服务器回复,直接强关了请求
500 程序错误
502 web服务器未启动啥的,网关错误
503 服务器性能瓶颈,不能处理后面的求
504 网关超时,一般都是web服务器已经找到上游,但上游一直不给回复,一般开发时都是SQL过慢,无回复
四.restful架构与其他架构的区别
1.SOAP webService
webService 是一种跨编程语言和跨操作系统平台的远程调用技术
通过HTTP协议发送请求和接收结果时采用XML格式封装,并增加一些特定的HTTP消息头,这些特定的HTTP消息头和内容格式就是SOAP协议
安全性 速度要求高,安全要求不高的场景,可用restful,
五.如何设计restful API
资源路径(URI)
比如:场景、版本号等
HTTP动词
比如:GET POST PUT DELETE等
过滤信息
如果数据很多,服务器要根据API提供的参数,过滤返回的结果,比如分页啥的
状态码
客户端有问题 401没有提供任何可验证的参数,直接拒了
错误处理
返回JSON或XML
返回结果