【swagger使用详解】『CSDN精选』java如何集成swagger进行接口测试【博主亲测有效】

news/2024/7/3 0:19:15

写在前面】对于我前端开发出身的写接口并测试的话,我还是更喜欢用swagger,主要它那种界面用起来比较的舒服,当然很多人还是习惯性的用post进行测试,接下来我就来和大家说说怎么将swagger引入到你的项目中去。及swagger该如何使用。
涉及知识点:java集成swagger,swagger测试接口,swagger的使用,前后端分离测试接口,如何引入swagger。No operations defined in spec! 解决方法

目录

  • 效果预览:
  • 1.引入依赖,修改pom文件
  • 2.创建配置文件SwaggerConfig
  • 3.修改spring-mvc.xml
  • 4.配置运行
  • 5.swagger使用方法
  • 6.彩蛋皇榜

效果预览:

在这里插入图片描述

1.引入依赖,修改pom文件

在我们的pom.xml文件中加入下面所示的代码,其主要目的就是支撑swagger依赖包的引入,可以理解为前端引入插件的概念

<!-- swagger2  start -->
    <dependency>
      <groupId>com.fasterxml</groupId>
      <artifactId>classmate</artifactId>
      <version>1.4.0</version>
    </dependency>
    <dependency>
      <groupId>io.swagger</groupId>
      <artifactId>swagger-models</artifactId>
      <version>1.5.21</version>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>2.9.2</version>
      <exclusions>
        <exclusion>
          <groupId>io.swagger</groupId>
          <artifactId>swagger-models</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.9.2</version>
    </dependency>
    <!--  swagger导出PDF/HTML所需依赖 START-->
    <dependency>
      <groupId>io.github.swagger2markup</groupId>
      <artifactId>swagger2markup</artifactId>
      <version>1.3.1</version>
      <exclusions>
        <exclusion>
          <artifactId>jackson-dataformat-yaml</artifactId>
          <groupId>com.fasterxml.jackson.dataformat</groupId>
        </exclusion>
        <exclusion>
          <artifactId>guava</artifactId>
          <groupId>com.google.guava</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- swagger2  end -->

2.创建配置文件SwaggerConfig

在utils公共文件下创建一个swagger文件,然后在里面放一个SwaggerConfig.java文件,里面赋值如下内容,主要是指向swagger的一些版本和界面。

package com.init.inithdd.utils.swagger;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
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;

@Configuration
@EnableSwagger2 // 重要!
//@EnableWebMvc
@ComponentScan(basePackages = { "com.init.inithdd" }) // Swagger扫描的package
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()//选择哪些路径和API会生成document
                //扫描指定包中的swagger注解
                //.apis(RequestHandlerSelectors.basePackage("com.hc"))
                //扫描所有有注解的api,用这种方式更灵活
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                //扫描所有的api(没有添加注解也可以扫描出来),用这种方式更直接
                //.apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

    /**
     * 这是匹配api的信息
     *
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 大标题
                .title("API接口文档")
                // 描述
                .description("API接口测试")
                // 版本号
                .version("1.0.0")
                .termsOfServiceUrl("").license("").licenseUrl("").build();
    }
}

3.修改spring-mvc.xml

在该文件内新增swagger测试访问地址映射,如下所示:

<!-- 支持swagger start -->
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/" />
<!-- 支持swagger end -->

切记】一定要添加下面的代码,不然就会出现问题,其主要目的就是添加自定义的swagger配置类,不然的话就会出现swagger只有界面没有接口的问题,这个地方困扰我好一会儿,网上找原因都是瞎扯淡。

<bean class="com.init.inithdd.swagger.SwaggerConfig"></bean>

没有添加bean解析就会如下图所示:
在这里插入图片描述
添加后是默认界面这样的:
在这里插入图片描述

4.配置运行

配置完上述三个文件后,我们启动我们的项目后,为了让swagger调试更加规范化,我们可以针对每个controller接口处添加如下两个注释代码,一个是大的controller类说明,另一个是类里面具体的接口文字说明:

@Api(value = "/userCon", tags = "用户管理")
@ApiOperation(value = "查询用户列表(ID)")

如下图所示:
在这里插入图片描述
在这里插入图片描述
配置完成后,swagger使用界面如下所示结构:
在这里插入图片描述
但是不难发现,为啥一个接口那么多行不同的请求方式,其实主要是你没有设置请求方式是啥,只要你设置了就可以展示一个你指定的,如下所示设置方法:
添加:method = RequestMethod.POST

在这里插入图片描述
在这里插入图片描述

5.swagger使用方法

点击对应的接口名,然后就会展开,我用查询为例,点击try it out按钮
在这里插入图片描述
然后点击Execute按钮进行测试,其中上面的入参是可以添加的。
在这里插入图片描述
如下所示我通过入参id为1查询了一条数据:
在这里插入图片描述

到这里我们的swagger使用就结束了,后面get和delete方式也是一样的使用规则,希望大家不迷路。

6.彩蛋皇榜

倾心打造佳作,愿解君之惑,如若有幸,盼君上榜助阵,特此敬谢!
皇榜入口点击此处


http://lihuaxi.xjx100.cn/news/1023808.html

相关文章

[Linux]破解原系统、安装新系统

​⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Linux基础操作。本文主要是分享一些Linux系统常用操作&#xff0c;内容主要来源是学校作业&#xff0c;分享出来的…

4月Google Play政策更新,游戏上架需要注意这几点

3月21日&#xff0c;据路透社报道&#xff0c;由于发现国内某知名电商应用存在恶意软件问题&#xff0c;谷歌已暂时将该APP从商店下架&#xff0c;并表示&#xff1a;将该APP下架是一种安全预防措施&#xff0c;已经下载的用户也会收到警告&#xff0c;提示他们进行卸载。 4月…

Prometheus监控Spring Cloud Gateway

&#x1f4da;概述 API网关作为应用服务与外部交互的入口&#xff0c;通过对API网关的监控&#xff0c;可以清晰的知道应用整体的请求量&#xff0c;以便根据不同的并发情况进行扩容处理。 对API网关的监控也是相当必要的。 通过Prometheus监控Gateway与监控普通Springboot项目…

九耶丨阁瑞钛伦特-教会你对商场顾客数据集的可视化分析!

在实际场景中&#xff0c;比如本项目的商场顾客数据集&#xff0c;只包含一批顾客的背景信息&#xff0c;但并不包含顾客的类别信息&#xff08;顾客是属于什么类别的&#xff09;。我们面对的许多真实数据集都是没有提供属性标签的&#xff0c;对于这种无标签的数据&#xff0…

0401脚手架配置代理-ajax-react

1 场景 跨域 现在很多web应用都是基于b\s架构并且实现前后端分离&#xff0c;当前端&#xff08;js&#xff09;向后端发送请求响应数据&#xff0c;但是由于浏览器的同源策略&#xff0c;会产生跨域问题。 关于同源策略和跨域问题的产生&#xff0c;可参考跨域问题及跨域解…

持续集成流水线:如何通过自动化解放你的双手?

你好&#xff0c;我是黄俊彬。 在过去的很多咨询项目中&#xff0c;我遇到了很多团队都没有很好运用持续集成流水线的实践。从团队协作的角度上来看&#xff0c;在版本发布过程中&#xff0c;经常出现测试依赖开发手工生成制品、版本发布也从开发本地出版本的问题。 而且项目…

CANoe创建仿真节点,并配合CAPL按需改变信号值

CANoe创建仿真节点,并配合CAPL按需改变信号值 写在前面 本文章只针对一路CAN进行仿真,主要目的是记录一下如何使用节点仿真搭配CAPL编程来模拟信号的发送,解决信号不断跳变的仿真场景,当然如果有多路信号需要仿真,只需要参考一路的方法,重复配置其他几路即可。 新建一个…

【自定义表格穿梭框】自定义封装jqgrid表格穿梭框,支持分页复选全选(附完整源码及效果图)

【写在前面】其实之前业务中也有这个方面的需求&#xff0c;但是总觉得自己写的有点乱&#xff0c;此时也就借这个机会重新封装一个公共的函数去实现这个穿梭框的效果&#xff0c;支持分页勾选&#xff0c;页面展示已选中和未选择的数据&#xff0c;使得系统操作更友好。 涉及知…