Swagger与knife4j接口测试工具

简介: Swagger与knife4j接口测试工具

1 传统测试工具postman

(1)简介

这个工具测试有所弊端要自己填充一些测试数据才可以非常麻烦20210216162944813.png

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。postman被500万开发者和超100,000家公司用于每月访问1.3亿个API。java开发通常是作为后台开发语言,通常的项目中的接 口开发需要一款测试工具来调试接口,这样无需前端页面也不耽误后台代码的开发进度,postman作为 一个接口测试工具,是一个非常不错的选择。


通过以上描述,希望初学者可以快速的安装和使用postman来进行接口的测试,当然,这里描述并不详 尽,postman作为一个接口测试的利器,还有很多特别强大的功能并没有介绍,后面随着项目的深入会 继续使用。

2 Swagger介绍

(1) 简介

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(http s://swagger.io/)。 它的主要作用是:


使得前后端分离开发更加方便,有利于团队协作


接口的文档在线自动生成,降低后端开发人员编写接口文档的负担


功能测试


Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在 项目中引入Springfox ,即可非常简单快捷的使用Swagger。

(2) SpringBoot集成Swagger

  • 引入依赖,在oldlu-leadnews-model模块中引入该依赖
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>

只需要在oldlu-leadnews-common中进行配置即可,因为其他微服务工程都直接或间接依赖即可。

  • 在oldlu-leadnews-admin工程的config包中添加一个配置类
package com.admin.config;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import springfox.documentation.service.Contact;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public Docket buildDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInfo())
                .select()
// 要扫描的API(Controller)基础包
                .apis(RequestHandlerSelectors.basePackage("com.oldlu"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo buildApiInfo() {
        Contact contact = new Contact("程序员", "", "");
        return new ApiInfoBuilder()
                .title("平台管理API文档")
                .description("平台管理服务api")
                .contact(contact)
                .version("1.0.0").build();
    }
}

(3)Swagger常用注解


在Java类中添加Swagger的注解即可生成Swagger接口文档,常用Swagger注解如下:


@Api:修饰整个类,描述Controller的作用


@ApiOperation:描述一个类的一个方法,或者说一个接口


@ApiParam:单个参数的描述信息


@ApiModel: 用 对 象 来 接 收 参 数


@ApiModelProperty:用对象接收参数时,描述对象的一个字段@ApiResponse:HTTP响应其中1个描述


@ApiResponses:HTTP 响 应 整 体 描 述


@ApiIgnore:使用该注解忽略这个API


@ApiError :发生错误返回的信息


@ApiImplicitParam:一个请求参数


@ApiImplicitParams:多个请求参数的描述信息


@ApiImplicitParam属性:


属性 取值 作用

paramType  查询参数类型

path 以地址的形式提交数据

query 直接跟参数完成自动映射赋值

body 以流的形式提交 仅支持POST

header 参数在request headers 里边提交

form 以form表单的形式提交 仅支持POST

dataType  参数的数据类型 只作为标志说明,并没有实际验证

Long

String

name  接收参数名

value  接收参数的意义描述

required  参数是否必填

true 必填

false 非必填

defaultValue  默认值

我们在AdChannelControllerApi中添加Swagger注解,代码如下所示:

@Api(value = "频道管理", tags = "channel", description = "频道管理API")
public interface AdChannelControllerApi {
    /**
     * 根据名称分页查询频道列表
     *
     * @param dto
     * @return
     */
    @ApiOperation("根据名称分页查询频道列表")
    public ResponseResult findByNameAndPage(ChannelDto dto);
}

ChannelDto

@Data
public class ChannelDto extends PageRequestDto {
    /**
     * 频道名称
     */
    @ApiModelProperty("频道名称")
    private String name;
}

PageRequestDto

@Data
@Slf4j
public class PageRequestDto {
    @ApiModelProperty(value="当前页",required = true)
    protected Integer size;
    @ApiModelProperty(value="每页显示条数",required = true)
    protected Integer page;
    public void checkParam() {
        if (this.page == null || this.page < 0) {
            setPage(1);
        }
        if (this.size == null || this.size < 0 || this.size > 100) {
            setSize(10);
        }
    }
}

启动admin微服务,访问地址:

http://localhost:9001/swagger-ui.html

20210216163207622.png

20210216163054406.png

查询 先点击Try it out 输入参数,然后点击Execute,结果如下:

202102161632336.png

2021063008391628.png

3 knife4j

(1)简介


knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!


gitee地址:https://gitee.com/xiaoym/knife4j


官方文档:https://doc.xiaominfo.com/


效果演示:http://knife4j.xiaominfo.com/doc.html


(2)核心功能


该UI增强包主要包括两大核心功能:文档说明 和 在线调试


文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示 例、请求参数、响应示例、响应参数、响应码等信息,使用swagger-bootstrap-ui能根据该文档说 明,对该接口的使用情况一目了然。


在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数 可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息,帮助开发者 在线调试,而不必通过其他测试工具测试接口是否正确,简介、强大。


个性化配置:通过个性化ui配置项,可自定义UI的相关显示信息


离线文档:根据标准规范,生成的在线markdown离线文档,开发者可以进行拷贝生成markdown 接口文档,通过其他第三方markdown转换工具转换成html或pdf,这样也可以放弃swagger2markdown组件


接口排序:自1.8.5后,ui支持了接口排序功能,例如一个注册功能主要包含了多个步骤,可以根据swagger-bootstrap-ui提供的接口排序规则实现接口的排序,step化接口操作,方便其他开发者进 行接口对接

(3)快速集成

  • 在oldlu-leadnews-common模块中的 pom.xml 文件中引入knife4j 的依赖,如下:
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
        </dependency>
  • admin模块的swagger配置类中,加上两个注解
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)

注解 说明

@EnableSwagger2 该注解是Springfox-swagger框架提供的使用Swagger注解,该注解必须加

@EnableKnife4j 该注解是knife4j 提供的增强注解,Ui提供了例如动态参数、参数过滤、接口排序等增强功能,如果你想使用这些增强功能就必须加该注解,否则可以不用加

访问

在浏览器输入地址: http://localhost:9001/doc.html

20210216163256453.png

查询频道列表:

202102161633120.png

还可以下载接口文档

20210216163324330.png

4 常见错误

4.1 knife4j 不能设置请求Header

问题描述:

knif4j 不能设置请求头信息

a962f645d8c64c86a5ab3c796932f090.png

解决方案:

开启动态请求参数,刷新即可。

0779fed4708548a48428988cfeba9bfd.png

871854c1fa5b4547a82a41db2bf4b2ba.png



























目录
相关文章
|
5天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
29 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
7天前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
51 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
1月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
1月前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。
|
1月前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
2月前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
135 11
|
2月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
266 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
3月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
78 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
3月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
107 4

热门文章

最新文章