【Java】--swagger使用

一、swagger前言

开发中,服务端提供接口给客户端或前端使用,作为程序员,事先总是需要对接口进行自测。一般常见使用PostMan来模拟。除此之外,swagger能够很好的进行接口模拟自测,方便。

二、sprngboot集成swagger

1、基本配置

引用jar包

    <!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-spring-web</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

config文件配置

@Configuration // 配置类
@EnableSwagger2 // 开启 swagger2 的自动配置
public class SwaggerConfig {
}

2、具体案例

@Configuration // 配置类
@EnableSwagger2 // 开启 swagger2 的自动配置
public class SwaggerConfig {

//    @Bean
//    public Docket docket() {
//        // 创建一个 swagger 的 bean 实例
//        return new Docket(DocumentationType.SWAGGER_2)
//                // 配置基本信息
//                .apiInfo(apiInfo());
//    }
//
//    // 基本信息设置
//    private ApiInfo apiInfo() {
//        Contact contact = new Contact(
//                "wwy", // 作者姓名
//                "https://blog.csdn.net/xunmengyou1990?spm=1010.2135.3001.5343", // 作者网址
//                "**@qq.com"); // 作者邮箱
//        return new ApiInfoBuilder()
//                .title("swagger") // 标题
//                .description("swagger文档") // 描述
//                .termsOfServiceUrl("https://blog.csdn.net/xunmengyou1990?spm=1010.2135.3001.5343") // 跳转连接
//                .version("1.0") // 版本
//                .license("Swagger教程")
//                .licenseUrl("https://blog.csdn.net/xunmengyou1990?spm=1010.2135.3001.5343")
//                .contact(contact)
//                .build();
//    }

    @Bean
    public Docket docket1() {
        // 创建一个 swagger 的 bean 实例
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("group1")
                .select() // 设置扫描接口
                .apis(RequestHandlerSelectors   // 配置如何扫描接口
                                //.any() // 扫描全部的接口,默认
                                //.none() // 全部不扫描
                             //   .basePackage("com.**.controller") // 扫描指定包下的接口,最为常用
                        //.withClassAnnotation(**Controller.class) // 扫描带有指定注解的类下所有接口
                        .withMethodAnnotation(ApiOperation.class) // 官方自带的注解

                )
                .paths(PathSelectors
                                .any() // 满足条件的路径,该断言总为true
                        //.none() // 不满足条件的路径,该断言总为false(可用于生成环境屏蔽 swagger)
                        //.ant("/**") // 满足字符串表达式路径
                        //.regex("") // 符合正则的路径
                )
                .build();
    }

    @Bean
    public Docket docket2() {
        // 创建一个 swagger 的 bean 实例
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("group2")
                .select() // 设置扫描接口
                .apis(RequestHandlerSelectors   // 配置如何扫描接口
                        //.any() // 扫描全部的接口,默认
                        //.none() // 全部不扫描
                        //   .basePackage("com.**.controller") // 扫描指定包下的接口,最为常用
                        //.withClassAnnotation(**Controller.class) // 扫描带有指定注解的类下所有接口
                        .withMethodAnnotation(SwaggerAnnotion.class) // 自定义注解,进行扫描

                )
                .paths(PathSelectors
                                .any() // 满足条件的路径,该断言总为true
                        //.none() // 不满足条件的路径,该断言总为false(可用于生成环境屏蔽 swagger)
                        //.ant("/**") // 满足字符串表达式路径
                        //.regex("") // 符合正则的路径
                )
                .build();
    }

}

按照上面配置,设置了两个组,每个组都是通过自定义注解来扫描。

	@RequestMapping("/sayHello.do")
	@ResponseBody //这是返回json格式
	@ApiOperation(value="hello接口")
	public Object sayHello() {
		return "Hello,World!";
	}

	@RequestMapping("/wrong.html")
	@SwaggerAnnotion(value="错误页面")
	public Object wrongPage(){
		return "wrong";
	}

这样就可以通过注解加到某些方法上,实现分组swagger,更方便!

### 如何在 Ruoyi-Vue 项目中集成和配置 Swagger #### 集成背景 Ruoyi-Vue 是一款基于 Spring Boot 和 Vue.js 的前后端分离快速开发平台。为了方便 API 文档管理和测试,在该项目中可以集成 Swagger 来提供直观的接口文档展示功能。 #### 修改资源处理映射路径 对于 `ruoyi-vue-plus` 版本,如果遇到访问 `/swagger-ui.html` 页面返回 404 错误的情况,则需调整静态资源配置以适应新版 Swagger UI 路径变化[^2]。具体操作是在项目的 ResourcesConfig 类中的 `addResourceHandlers()` 方法里指定新的 Swagger UI 文件位置: ```java public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/4.15.5/"); } ``` 此段代码的作用是指定当请求 URL 开头为 "/swagger-ui/" 时,服务器会去 classpath 下对应的文件夹寻找匹配的前端资源文件并响应给客户端显示[^4]。 #### 后台服务端设置 除了上述修改外,还需要确保后台已经正确引入了 springdoc-openapi-ui 或者 springfox-swagger2 及其依赖项来支持 Swagger 功能,并完成必要的 Bean 注册工作以便自动生成 RESTful 接口描述信息。 #### 前端页面适配 由于部分版本更新导致原有UI入口被移除,因此建议开发者直接通过浏览器输入形如 `${your-server-url}/swagger-ui/index.html?url=/v3/api-docs#/` 这样的链接来进行API浏览与调试。 #### Redis与数据源配置无关性声明 需要注意的是,关于Redis以及数据库连接池的相关参数设定位于 `src/main/resources/application.yml` 中,并不会影响到Swagger组件的功能实现过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBoy_W.W.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值