RESTful
单元测试和黑盒测试
https://blog.csdn.net/fengbingchun/article/details/40457431
RESTful是接口编写的规范
1.URI - 规范
2.用法
3.错误处理
REST(Representation State Transfer)
1.什么是表现层(前端,后端将实体(资源)的数据传送到前端,前端规则展示出来(状态))
2.State(数据,具体实体(资源))
3.Transfer(状态变化)
资源:就是后端具体实体(文本,字符串,表,库,文件)
尽量一个接口对应一个实体
RESTful架构
1.每一个URI代表一个资源(实体)
2.表现层对客户端和服务端之传递资源进行展示
3.客户端通过HTTP动词(方法),对服务器的资源进行操作,实现“表现层的资源的状态转化”
规范的URL写法
1.协议
2.地址 - 域名
3.端口
4.URI
http://api.example.com/v2( v2 - 表示版本(version))
http://api.example.com/v2/user - post -
例子:
GET /zoos 列出所有动物园
POST /zoos 新增一个动物园
GET /zoos/ID :获取某个指定的动物的ID信息
PUT /zoos/ID: 更新某个指定的动物园的信息(全部更新)
PATCH /zoos/ID: 更新某个指定的动物园的信息(部分更新)
DELETE /zoos/ID:删除指定的动物园
GET /zoos/ID/animals:列出动物园中的所有动物
DELETE /zoos/ID/animals/ID:删除一个动物
过滤信息
?limite=10:指定返回的记录数量
?page=2&per_page=100:指定第几页,以及每页记录的数量
?sortby=name&order=asc:指定返回的记录按照什么排序,以及按照升序(降序)的顺序排序
URL设计
动词+宾语(动词是HTTP方法,宾语是实体,必须是名词)
动词的覆盖
POST模拟其他方法(put,patch,delete)
POST /api/Person/4 HTTP/1.1
X -HTTP - Method -Override:PUT (动词覆盖)
复数URL - 集合
避免多级URL
GET /authors/12/categories/2 - 不允许
GET /authors/12?categories=2 - 多级URL写法
错误处理:以字典形式返回
状态码:
1xx:相关信息
2xx:操作成功
3xx:重定向
4xx:客户端错误
5xx:服务器错误
postman(接口测试工具)
学习工具
1.fiddler - 抓包 接口之间的调用(接口数据,如何断言)
2.postman - 接口测试工具( 1.怎么设置接口测试方法 2.怎么设置URI/URL 3.自定义Header 4.请求参数 5.怎么做断言 6.参数化)
接口关联:
通过一个接口执行完毕后,将需要的值写入变量或者全局变量,以便于后续的接口作为参数使用
引入文件里的内容,实现参数化的时候注意用的关键词是data,后面跟文件中的变量名称
var expected_result = data.expected (预期结果)
接口和安全(SSL)
https://blog.csdn.net/liuchunming033/article/details/48470575
专业名词
认证,授权,凭证,SSL,https 完成SSL生成和配置
SSL证书
OAuth
生成证书 - 个人,SSL机构购买
x509证书一般会用到三种文件key,csr,crt
Key是私用密钥,openssl格式,通常是rsa算法。
csr是证书请求文件,用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。
crt是CA认证后的证书文件(windows下面的csr,其实是crt),签署人用自己的key给你签署的凭证。
CA根证书的生成步骤
生成CA私钥(.key)–>生成CA证书请求(.csr)–>自签名得到根证书(.crt)(CA给自已颁发的证书)。
# Generate CA private key
openssl genrsa -out ca.key 2048
# Generate CSR
openssl req -new -key ca.key -out ca.csr
# Generate Self Signed certificate(CA 根证书)
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
用户证书的生成步骤
生成私钥(.key)–>生成证书请求(.csr)–>用CA根证书签名得到证书(.crt)
服务器端用户证书:
# private key
$openssl genrsa -des3 -out server.key 1024
# generate csr
$openssl req -new -key server.key -out server.csr
# generate certificate
$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
客户端用户证书:
$openssl genrsa -des3 -out client.key 1024
$openssl req -new -key client.key -out client.csr
$openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
API安全机制
https://juejin.im/post/6844903833831915527
https://www.jianshu.com/p/c6518a8f4040
接口安全机制
1.token机制- - 时间短,是客户端访问服务器的凭证
2.时间戳超时机制 - -用每次请求都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,如果时间差大于—定时间(比如5分钟),则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段。
3.签名机制 – 签名机制-将Token和时间戳加上其他请求参数再用MD5或SHA-1算法(可根据情况加点盐)加密,加密后的数据就是本次请求的签名sign,服务端按收到请求后以同样的算法得到签名,并跟当前的签名进行比对,如果不一样,说明参数被更改过,直接返回错误标识。签名机制保证了数据不会被篡改。
接口安全实现流程
1、客户端通过用户名密码登录服务器并获取Token
2、客户端生成时间翟timestamp,并将timestamp作为其中一个参数
3、客户端将所有的参数,包括Token和timestamp按照自己的算法进行排序加密得到签名sign
4、将token、timestamp和sign作为请求时必须携带的参数加在每个请求的URL后边(http//url/requestctoken=1238timestamp=123&sign=123123123)
5、服务端写一个过滤器对oken,timestamp和sign进行验证,只有在token有效、timestamp未超时、缓存服务器中不存在sign三种情况同时满足,本次请求才有效
OAuth - 保证外网接口的安全性
https://blog.csdn.net/zhou920786312/article/details/95536556
清楚第三方提供的API接口规范
1.在第三方中心,申请自己的appid/clientid/secret,设置回调URL
2.打开自己app的系统,使用第三方账号登录
3.授权- 授权自己的app可以访问你的账号的相关信息(user信息,性别,图像,昵称等等)
4.这个过程用的认证授权机制就是OAuth