springboot从零入门之接口测试!(springboot 接口参数校验)
ccwgpt 2025-06-09 20:33 16 浏览 0 评论
接口测试
接口测试就是测试系统组件间的接口,检测外部系统与系统之间以及内部各个子系统之间的交互点,重点是检查数据的交换、传递和控制管理过程以及系统间的相互逻辑依赖关系等。对于Web开发来说,接口测试主要是测试对外暴露的接口,测试不同情况下的入参对应的出参信息,从而判断接口是否符合或满足相应的功能性和安全性要求。开发人员在完成接口的功能之后需要进行自测,自测完成后,测试人员再对接口进行自动化测试,包括白盒测试、黑盒测试和压力测试等。
目前,开发人员常用的接口测试工具有很多种,客户端的有Postman、jMeter、RestClient和SoapUI等,Web端的有Postwoman。本书推荐的工具是Postman和Postwoman。Postman使用起来非常简单,支持团队测试用例协同管理,支持GET、POST、PUT和DELETE等多种请求方式,支持文件上传、响应验证、变量管理和环境参数管理等功能,还可以批量运行接口测试,并支持用例导出和导入功能,是一款非常实用的免费软件;Postwoman是Postman的Web版,不需要安装即可使用。
实战:使用Postman测试接口
请读者自行前往Postman官方网站下载最新版本,并将其安装到自己的计算机上。本书采用的Postman版本为8.0.7。在本地安装完成Postman后将其打开,初始化界面如图2.7所示。
在图2.7中,序号1为新建一个接口测试的标签页,序号2为导入测试案例,序号3为保存当前接口测试的例子,序号4为所有接口测试的历史记录。
现在创建一个请求,使用Postman发送请求到服务器,并获取返回值。单击“+”跳转到新建接口测试页面,按照如图2.8所示填充请求的参数,单击Send按钮即可完成请求的发送,并返回hello lihuacheng。
如图2.8所示,创建一个HTTP请求一共有以下几个步骤:
(1)选择HTTP请求,GET或POST。
(2)添加请求的URL地址。
(3)添加请求的参数。
(4)单击Send按钮,发送请求到服务器,查看返回值。
下面举例说明使用Postman测试不同接口请求的过程。
1. GET请求
请求接口的地址为localhost:9090/helloGet?userName=lihuacheng。
可以得到的返回值为hello lihuacheng,过程如图2.8所示。
2. POST请求
POST请求有两种参数提交的方式,即Form和JSON。(1)Form表单提交参数。POST请求和GET请求的区别只是把GET请求换成了POST请求,创建的请求页面如图2.9所示。
(2)JSON提交参数。与使用Form表单提交参数请求相比,JSON提交的参数放置在Body中,现在企业开发通常使用这种方式进行前后端的数据交互,创建的请求如图2.10所示。
3. PUT请求
PUT请求和POST中JSON请求方式的区别在于,它将POST请求换成了PUT请求,请求的页面如图2.11所示。
以上即完成了Postman发送HTTP的基本请求,包含GET、POST和PUT,以及参数的设置和结果的查看,这类接口测试在本地的开发中非常实用(测试代码请参考源代码)。
认识Swagger2 UI
Swagger2 UI是Swagger中用于显示Restful接口文档的项目。在项目中由HTML、JavaScript和CSS文件组成一个接口文档,没有其他的外部依赖。
Swagger2 UI可以根据业务代码中的注解生成相应的API文档,方便开发人员阅读。
在项目开发中使用Swagger2 UI的好处有以下几点:
生成的界面比Java doc生成的界面更加美观;
可以实时同步API文档(修改代码后,文档同步修改);解析速度快,效率高;
能很好地支持现有Spring MVC框架;
可以充当前后端交流的重要桥梁,方便、快捷。
Swagger2 UI允许项目中生产、显示和消费Restful服务,不需要代理和第三方服务;Swagger2 UI是一个依赖自由的资源集合,它能通过Swagger2API动态地生成漂亮的文档;Swagger2 UI还可以部署到任意服务器的开发环境中。
实战:项目集成Swagger2实现可视化接口
如果要在项目中使用Swagger2 UI,需要以下几个步骤:
(1)添加Swagger2 UI依赖到Spring Boot项目的pom.xml中,本书使用的Swagger2 UI版本号为2.9.2。Swagger2 UI的依赖代码如下:
<!-- 添加Swagger2 UI的依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
(2)在项目中启用Swagger2 UI,需在Spring Boot的启动类中加注解@EnableSwagger2,以开启Swagger2 UI接口文档,并引入需要的包,代码如下:import
springfox.documentation.swagger2.annotations.EnableSwagger2;
(3)添加一个端口用来测试,在application.properties文件中添加以下代码:
server.port=9090
(4)打开浏览器访问本地链接
http://localhost:9090/swaggerui.html,显示Swagger2 UI的初始化页面,如图2.12所示。因为暂时没有添加API文档,所以页面为空。
提示:在Spring Boot项目中,集成插件或者框架有个很重要的特性,使用@EnableXXX注解就能启用当前注解。例如,@EnableCaching启用缓存,@EnableAsync启用多线程,@EnableDubbo启用Dubbo。
(5)为了让Swagger2 UI文档显得更有条理性,需要对Swagger2 UI进行设置。在com.onyx.springbootdemo包中增加一个Swagger2 UI的配置类Swagger2Config,同时把启动类的@EnableSwagger2转移到配置类中,以保证配置的完整性。配置类的代码如下:
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
// 方法需要有ApiOperation注解才能生成接口文档
.apis(RequestHandlerSelectors.withMethodAnnotation
(ApiOperation.class))
// 路径使用any风格
.paths(PathSelectors.any())
.build()
// 如何保护API,有3种验证,即ApiKey、BasicAuth和OAuth
// 这里的保护为可选
.securitySchemes(security())
// 接口文档的基本信息
.apiInfo(apiInfo());
}
/**
* 接口文档的详细信息
*
* @return
*/ private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("swagger2 UI API文档")
.description("api文档")
.termsOfServiceUrl("http://localhost:9090/swagger
ui.html#/")
.version("1.0.0")
.build();
}
/**
* 安全信息
* @return
*/
private List<ApiKey> security() {
ArrayList<ApiKey> apiKeys = new ArrayList<>();
apiKeys.add(new ApiKey("root","root","123456"));
return apiKeys;
}
}
(6)添加完配置代码,然后重启Spring Boot项目,再次访问
http://localhost:9090/swagger-ui.html,会返回具体的API信息,如图2.13所示。
(7)使用Swagger2 UI的注解生成API文档,在Controller包中新建UserController类,代码如下:
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
@Api("用户模块")
@RestController
public class UserController {
@ApiOperation("helloGet方法")
@ApiImplicitParams({
@ApiImplicitParam(name = "username",value = "名字",required
= true)
})
@GetMapping("/helloGet")
public String helloGet(@RequestParam("userName") @ApiParam("请求的
名字")String username) {
return "hello " + username;
}
@ApiOperation("helloPostJSON方法")
@PostMapping("/helloPostJSON")
public String helloPostJSON(@RequestBody UserVO userVO) {
return "hello " + userVO.getUserName();
}
}
@ApiModel(description = "用户实体类")
class UserVO {
@ApiModelProperty("userVo的用户名")
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
(8)重启当前项目之后再次访问
http://localhost:9090/swaggerui.html,就能看到GET请求和POST请求的API文档,如图2.14所示。
(9)选择POST命令,查看POST请求的具体入参。如图2.15所示为POST请求的具体文档,因为当前的POST方法是JSON形式,所以请求的参数是JSON。
以上代码简单地设置了Swagger2 UI,它还有其他一些注解,参见表2.4。
说明:在项目中使用Swagger2 UI注解即可完成项目API文档的编写。在代码开发完成后,不再需要单独写一份接口文档,而且修改代码后能第一时间修改接口文档,不会造成接口文档和实际接口不一致的问题。
相关推荐
- 一个基于.Net Core遵循Clean Architecture原则开源架构
-
今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...
- AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%
-
写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...
- OneCode低代码平台的事件驱动设计:架构解析与实践
-
引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...
- 国内大厂AI插件评测:根据UI图生成Vue前端代码
-
在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...
- AI+低代码技术揭秘(二):核心架构
-
本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...
- GitDiagram用AI把代码库变成可视化架构图
-
这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...
- 30天自制操作系统:第六天:代码架构整理与中断处理
-
1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...
- AI写代码越帮越忙?2025年研究揭露惊人真相
-
近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...
- 一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具
-
一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...
- 5分钟掌握 c# 网络通讯架构及代码示例
-
以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...
- 从复杂到优雅:用建造者和责任链重塑代码架构
-
引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...
- 低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈
-
专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...
- 框架设计并不是简单粗暴地写代码,而是要先弄清逻辑
-
3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...
- 大佬用 Avalonia 框架开发的 C# 代码 IDE
-
AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...
- 轻量级框架Lagent 仅需20行代码即可构建自己的智能代理
-
站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 框架图模板 (59)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)