什么是RESTful

随着移动互联网的发展,客户端层出不穷,app,web,微信端等等,而后端业务逻辑基于是一致的,如何做到业务逻辑“一次编写,随时接入”?答案是通过远程调用API,而目前比较火的方案是“Restful
api”。简单来说,RESTful API 是基于HTTP协议产生的一种相对简单的API设计方案,属于无状态传输。

本质: 一种软件架构风格
核心: 面向资源
解决的问题:

  • 降低开发的复杂性
  • 提高系统的可伸缩性

设计概念和准则

  • 网络上的所有事物都可以被抽象为资源。
  • 每一个资源都有唯一的自愿标识,对资源的操作不会改变这些标识。
  • 所有的操作都是无状态的。

SOAP和REST的区别

RESTful 规范和Postman调试

RESTful 规范和Postman调试

如何设计RESTFul风格API(动物园为例)

RESTful 规范和Postman调试

资源路径

在RESTful架构中,每个网址代表一种资源,所以网址中不能有动词,只能有名词。一般来说API中的名词应该使用复数。

举例
举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。
https://api.example.com/v1/zoos //动物园资源
https://api.example.com/v1/animals //动物园资源
https://api.example.com/v1/employees //动物园资源

HTTP动词

对于资源的操作(CURD),由于HTTP动词(谓词)表示。

  • GET:从服务器取出资源(一项或多项)。
  • POST:在服务器新建一个资源。
  • PUT:在服务器更新资源(客户端提供改变后的完整资源)
  • PATCH:在服务器更新资源(客户端提供改变的属性)
  • DELETE:从服务器删除资源。
    举例
  • POST/zoos:新建一个动物园
  • GET/zoos/ID:获取某个指定动物园的信息
  • PUT/zoos/ID:更新某个指定动物园的信息
  • DELETE/zoos/ID:删除某个动物园

过滤信息

如果记录数量很多,服务器不可能都将它们返回给用户。
API应该提供参数,过滤结果

举例

  • ?offset = 10:指定返回记录的开始位置。
  • ?page = 2&per_page = 100:指定第几页,以及每页的记录数
  • ?sortby = name&order = asc:指定返回结果排序,以及排序顺序。
  • ?animal_tupe_id = 1:指定筛选条件。

状态码

RESTful 规范和Postman调试

错误处理

如果状态码是4xx或者5xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值
{
“error”:“参数错误”
}

返回结果

针对不同操作,服务器向用户返回的结果应该符合以下规范:

  • GET /collections :返回资源对象的列表(数组)
  • GET /collections/identity :返回单个资源对象
  • POST /collections :返回新生成的资源对象
  • PUT /collections/identity :返回完整的资源对象
  • PATCH /collections/identity :返回被修改的属性
  • DELETE /collections/identity :返回一个空文档

REST风格的接口测试流程

测试方法

  • 手动测试
    借助工具完成
    拼接参数执行请求
  • 自动化测试
    编写自动化脚本实现
    一劳永逸,加入回归测试集合
    需要一定编码经验

测试工具

常用的测试工具
Pastman
JMeter
ResClient等等

功能测试

测试覆盖:
业务流程
边界值,特殊字符
参数类型,必选项,可选项等

性能测试

测试覆盖:
并发数
吞吐量,tps
出错率等

安全性测试

测试覆盖
敏感数据加密
恶意攻击等

测试步骤

RESTful 规范和Postman调试

如何编写功能测试计划

RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试
RESTful 规范和Postman调试

如何使用Postman验证测试用例

GET测试用例

RESTful 规范和Postman调试
RESTful 规范和Postman调试
负向

  • id不存在RESTful 规范和Postman调试

POST测试用例

RESTful 规范和Postman调试
RESTful 规范和Postman调试
负向

  • 多次添加name元素相同的数据
    RESTful 规范和Postman调试
  • name数据为空
    RESTful 规范和Postman调试
  • age数据不规范
    RESTful 规范和Postman调试

PUT测试用例

RESTful 规范和Postman调试
RESTful 规范和Postman调试
反向

  • id不存在
    RESTful 规范和Postman调试
  • name为空
    RESTful 规范和Postman调试
    RESTful 规范和Postman调试

PUT操作设计有问题,没有和POST操作一样的限制

DELETE测试用例

RESTful 规范和Postman调试
RESTful 规范和Postman调试

这里操作成功无返回,可使用GET操作遍历数据确认,可自己设置返回

  • 删除不存在id数据
    RESTful 规范和Postman调试

相关文章: