欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RESTful 规范与接口测试

程序员文章站 2024-03-22 09:32:28
...

RESTful

本质:一种软件架构风格。

核心:面向资源。

解决问题:1. 降低开发的复杂性。2. 提高系统的可伸缩性 。

设计概念和准则

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

资源:所谓“资源”,就是网络上的一个实体,或者说是网络上的一个具体信息。

RESTful中的HTTP协议

HTTP是一个属于应用层的协议,特点是简捷、快速。

url

例:schema://host[:port]/path[?query-string] [#anchor]

schema:指定底层使用的协议(例如:http,https,ftp)

host:服务器的IP地址或者域名

port:服务器的端口,默认为80

path:访问资源的路径

query-string:发送给http服务器的数据

anchor:锚

请求

组成格式:请求行、消息报头、请求正文

请求行:Method Request-URL HTTP-Version CRLF(例:GET /HTTP/1.0 CRLF)

请求方式

GET:请求获取Request-URL所标识的资源

post:在Request-URL所标识的资源后附加新的数据

head:请求获取有Request-URL所标识的资源的响应消息报头

put:请求服务器存储一个资源,并用Request-URL作为器标识

delete:请求服务器删除Request-URL所标识的资源

options:请求查询夫妻武器的性能,或者查询与资源相关的选项和需求

响应

组成格式:状态行、纤细报头、响应正文

状态行:HTTP-Version Status-Code Reason-Phrase CRLF(HTTP/1.0 200 OK)

常用状态码

  1. 200 OK //客户端请求成功
  2. 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  3. 401 Unauthorized //服务器收到请求,但是拒绝提供服务
  4. 400 Not Found //请求资源不存在
  5. 500 Internal Server Error //服务器发生不可预期的错误
  6. 503 Server Unavailable //服务器当前不能处理客户端的请求

RESTful与SOAP的区别

SOAP WebService

​ WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

​ WebServce通过HTTP协议发送请求和接收结果时采用XML格式封装,并增加了一些特定的HTTP消息头,这些特定的HTTP消息头和XML内容格式就是SOAP协议。

效率和易用性

​ SOAP由于各种需求不断扩充其本身协议的内容,导致在SOAP处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。

​ RESTful由于其面向资源接口设计以操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念。

安全性

​ RESTful对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。

​ SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。

如何设计RESTful风格的API

资源路径(URL)

在RESTful架构中,每一个网址代表一种资源,所以网址中不能有动词,只能有名词。一帮来说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:从服务器删除资源

例:

  1. POST /zoos ://新建一个动物园
  2. GET /zoos/ID: //获取某个指定的动物园的信息
  3. PUT /zoos/ID: //更新某个指定动物园的信息
  4. DELETE /zoos/ID://删除某个动物园

过滤信息

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

例:

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

状态码

服务器向用户返回的状态码和提示信息,使用标准HTTP状态码

幂等性(Idempotent):是一个数学上的概念,在这里表示发送一次和多次请求引起的边界效应是一致的。Post是不幂等方法

  1. 200 OK 服务器成功返回用户请求的数据,该操作是幂等的。
  2. 201 CREATED 新建或修改数据成功。
  3. 204 NO CONTENT 删除数据成功
  4. 400 BAD REQUEST 用户发出的请求有错误,该操作是幂等的
  5. 401 Unauthorized 表示用户没有认证,无法进行当前操作
  6. 403 Forbidden 表示用户访问时被禁止的
  7. 422 Unprocesable Entity 当创建一个对象是,发生一个验证错误
  8. 500 INTERNAL SERVER ERROR 服务器发生错误,用户将无法判断发出的请求是否成功

错误处理

如果状态码是4xx或者5xx,就应该向用户返回出错信息,一般来说,返回的信息中将error作为键名,出错信息作为键值即可

{
    “error”:"参数错误"
}

返回结果

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

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

接口测试

接口测试又称为API测试(Application Programming Interface)

接口测试是测试系统组件间接口的一种测试,重点挂关注数据传递

接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发测试

RESTful风格接口测试流程

测试覆盖

  1. 业务流程
  2. 边界值,特殊字符
  3. 参数类型,必选项,可选项等
  4. 并发数
  5. 吞吐量,tps
  6. 出错率等
  7. 敏感数据加密
  8. 恶意攻击

测试步骤

了解接口格式–》编写测试用例–》测试用例评审–》开始测试–》完成测试报告

Rest api测试计划

需求描述

GET:http://loclahost:8080/MyWebsite/user/

Header:Content-Type = application/json

Body:空

Response:返回所有的User对象

Staus code:200

错误返回

Code:4 Message:找不到指定id对象

Code:5 Message:对象已经存在

Code:6 Message:参数不匹配

业务流程

GET

  1. 正向用例:返回所有对象和返回某一个对象
  2. 负向用例:一个不存在的id、URL输入不正确

使用Postman验证测试用例

RESTful 规范与接口测试
RESTful 规范与接口测试
RESTful 规范与接口测试

相关标签: java http