Restful
简介:
本质:是一种软件架构风格
核心:面向资源
解决的问题:降低开发的复杂性,提高系统的可伸缩性
设计概念和准则:
- 网络上的所有事物都可以被抽象为资源
- 每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识
- 所有的操作都是无状态的 无状态表示的是:每一次操作的都是独立的,没有任何关系
Restful中HTTP协议介绍
- HTTP协议—URL
HTTP协议是一个属于应用层的协议,特点是简捷、快速
schema://host[:port]/path?query-string
schema是协议,包括http,https,ftp
anchor是锚,指资源某一个章节或某一个函数的标识
- HTTP协议—请求
组成格式:请求行、消息报头、请求正文
请求行:Method Request-URL HTTP-Version CRLF
例如:GET/HTTP/1.1CRLF
-
请求方法:GET/POST/HEAD/PUT/DELETE/OPTIONS
-
状态码
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功
1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了
3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
SOAP 与 RESTFUL 的区别
-
WebService :
webservice 是一种跨变成语言和跨才操作平台的远程调用技术。
-
SOAP协议的定义:
webservice通过http协议发送请求和接受结果时采用xml格式封装,并增加了一些特定的http消息头,这些特定的http消息头和xml内容格式就是soap协议。
-
RESTFUL :
核心思想是资源
面向资源的接口设计
抽象操作为基础的crud
http 是应用协议并非传输协议
-
安全性区别:
restful 安全验证不足
SOAP 的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利
-
效率和易用性区别
restful 由于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念
Soap内部由于各种需求不断扩充其本身协议的内容,导致在SOAP处理方面的性能有所下降
-
适用环境:
RESTful适合资源型服务接口,高效率,安全性要求不高的场景。
Soap适合安全性强的场景
-
补充区别:
SOAP-Simple Object Access Protocol 简单对象访问协议,交换数据的一种协议规范,轻量的、简单的、基于XML的协议。
REST-Representational State Transfer 表述性状态转移,一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性。
如何设计Restful Api
资源路径:
在 RESTFUL架构中,每个网址代表一种资源所以网址中不能有动词,只能有名词。一般来说API中的名词应该使用复数。
版本信息:加入到url中 v1
或者加入到请求头
HTTP动词 : 对 资源的CRUD操作 有HTTP动词(谓词)表示
- get 获取资源
- post 新增一个资源
- put 更新一个资源(更新后返回该资源的属性)
- patch 在服务器更新资源(更新后只返回更新的属性)
- delete 删除一个资源
举例:
https://api.example.com/v1/zoos //动物园的资源,在动物园前加个版本号可以规范确定
https://api.example.com/v1/animals //动物的资源
https://api.example.com/v1/employees //雇员的资源
设计动物园资源的Api:
- GET /zoos:列出所有动物园
- POST /zoos:新建一个动物园
- GET /zoos/ID:获取某个指定动物园的信息
- PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
- DELETE /zoos/ID:删除某个动物园
- GET /zoos/ID/animals:列出某个指定动物园的所有动物
- DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
接口测试
什么是接口测试?
1、接口测试又称为API测试 Application Programming Interface
2、接口测试是测试系统组件间接口的一种测试。重点关注数据传递。
3、接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。
REST风格的接口测试流程
功能测试-测试覆盖:
- 业务流程
- 边界值,特殊字符
- 参数类型,必选项,可选项
功能测试-性能测试:
- 并发数(同一时间发送的用户的数量);
- 吞吐量,tps;
- 出错率
测试计划
GET:
正向用例: 返回所有对象和返回某一个对象
负向用例: 一个不存在的id
URL输入不正确
POST:
正向用例:输入正确参数新加一个对象(特殊字符,中文等)
负向用例:参数name为空/重复
参数age为0/-1/100/101/字符串/null/空
参数 salary,为整数/带小数/负数/null/空
PUT:
正向用例:输入正确参数修改一个对象(特殊字符,中文等)
负向用例:参数id为空/无效值
参数name为空/重复
参数age为0/-1/100/101/字符串/null/空
参数 salary:为整数/带小数/负数/null/空
DELETE:
正向用例:删除所有对象和删除某一个对象
负向用例:一个不存在的id
URL输入不正确
使用postman验证测试用例
POST:
GET: