RuoYi-Vue后端接口文档:Swagger3.0配置教程

RuoYi-Vue后端接口文档:Swagger3.0配置教程

【免费下载链接】RuoYi-Vue :tada: (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本 【免费下载链接】RuoYi-Vue 项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue

你是否还在为后端接口调试繁琐而烦恼?是否希望拥有一份自动生成且美观易用的API文档?本文将详细介绍如何在RuoYi-Vue项目中配置Swagger3.0(OpenAPI 3.0),帮助你快速搭建专业的接口文档系统。读完本文后,你将能够:配置Swagger3.0环境、自定义API文档信息、设置接口安全认证、访问和使用接口文档。

Swagger3.0简介

Swagger(OpenAPI)是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。Swagger3.0(OAS 3.0)是其最新版本,相比之前版本有更简洁的规范和更强大的功能。在RuoYi-Vue项目中集成Swagger3.0,可以自动生成接口文档,方便前后端开发人员协作,减少接口文档维护成本。

配置文件解析

RuoYi-Vue项目的Swagger3.0配置主要集中在SwaggerConfig.java文件中,该文件位于ruoyi-framework/src/main/java/com/ruoyi/framework/config/目录下。

核心配置类

ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java是Swagger3.0的核心配置类,下面对其关键代码进行解析:

@Configuration
public class SwaggerConfig {
    /** 是否开启swagger */
    @Value("${swagger.enabled}")
    private boolean enabled;

    /** 设置请求的统一前缀 */
    @Value("${swagger.pathMapping}")
    private String pathMapping;

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30)
                .enable(enabled)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build()
                .securitySchemes(securitySchemes())
                .securityContexts(securityContexts())
                .pathMapping(pathMapping);
    }
}
  • @Configuration:标识该类为配置类,会被Spring容器扫描并加载。
  • @Value("${swagger.enabled}"):从配置文件中读取是否开启Swagger的配置,方便在不同环境(开发、测试、生产)中切换。
  • Docket:Swagger的核心配置对象,DocumentationType.OAS_30指定使用Swagger3.0(OpenAPI 3.0)规范。
  • enable(enabled):根据配置决定是否启用Swagger。
  • apiInfo():配置API文档的基本信息,如标题、描述、版本等。
  • select():开始配置接口扫描策略。
  • apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)):只扫描带有@ApiOperation注解的方法,这样可以精确控制哪些接口需要生成文档。
  • paths(PathSelectors.any()):匹配所有路径。
  • securitySchemes()securityContexts():配置接口安全认证相关信息,如Token认证。
  • pathMapping(pathMapping):设置请求的统一前缀。

API文档信息配置

apiInfo()方法用于配置API文档的基本信息,这些信息会显示在Swagger文档的首页。

private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
            .title("标题:若依管理系统_接口文档")
            .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
            .contact(new Contact(ruoyiConfig.getName(), null, null))
            .version("版本号:" + ruoyiConfig.getVersion())
            .build();
}
  • title:文档标题。
  • description:文档描述,简要说明接口文档的用途和涵盖的模块。
  • contact:联系人信息,这里使用了系统配置的名称。
  • version:文档版本号,与系统版本保持一致。

安全认证配置

为了保证接口的安全性,Swagger3.0支持配置认证方式,RuoYi-Vue项目中配置了基于Token的认证。

private List<SecurityScheme> securitySchemes() {
    List<SecurityScheme> apiKeyList = new ArrayList<>();
    apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
    return apiKeyList;
}

private List<SecurityContext> securityContexts() {
    List<SecurityContext> securityContexts = new ArrayList<>();
    securityContexts.add(
            SecurityContext.builder()
                    .securityReferences(defaultAuth())
                    .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
                    .build());
    return securityContexts;
}

private List<SecurityReference> defaultAuth() {
    AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
    authorizationScopes[0] = authorizationScope;
    List<SecurityReference> securityReferences = new ArrayList<>();
    securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
    return securityReferences;
}
  • securitySchemes():定义安全方案,这里配置了一个名为Authorization的API Key,位置在请求头中。
  • securityContexts():配置安全上下文,指定哪些路径需要应用安全方案。这里设置所有路径(/.*)都需要认证。
  • defaultAuth():定义默认的安全引用,指定授权范围。

资源映射配置

Swagger3.0的UI界面需要加载静态资源,RuoYi-Vue项目在ResourcesConfig.java中配置了资源映射。

ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java

@Configuration
public class ResourcesConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /** swagger配置 */
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
    }
}
  • addResourceHandler("/swagger-ui/**"):配置Swagger UI的访问路径。
  • addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"):指定Swagger UI静态资源的位置,这些资源通常由springfox-swagger-ui依赖提供。

安全配置放行

由于RuoYi-Vue项目集成了Spring Security,需要在安全配置中放行Swagger相关的URL,否则会被拦截。

ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                // 其他配置...
    }
}
  • antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll():允许所有用户访问Swagger相关的URL,包括UI页面、资源文件和API文档接口。

接口使用示例

RuoYi-Vue项目中提供了使用Swagger注解的示例,位于TestController.java中。

ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java

@RestController
@RequestMapping("/test/swagger")
@Api(value = "Swagger测试接口", tags = {"Swagger测试接口"})
public class TestController {
    @ApiOperation("获取列表")
    @GetMapping("/list")
    public AjaxResult list() {
        List<String> list = new ArrayList<>();
        list.add("swagger");
        list.add("test");
        return AjaxResult.success(list);
    }

    @ApiOperation("获取信息")
    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "int", paramType = "path")
    @GetMapping("/info/{id}")
    public AjaxResult info(@PathVariable("id") Integer id) {
        return AjaxResult.success(id);
    }
}
  • @Api:用在类上,描述类的作用。
  • @ApiOperation:用在方法上,描述方法的作用。
  • @ApiImplicitParam:描述方法的参数。

访问Swagger UI

完成上述配置后,启动项目,访问http://localhost:8080/swagger-ui/index.html即可打开Swagger3.0的UI界面。在界面上可以查看所有已配置的接口,测试接口调用,查看接口参数和返回值说明等。

总结

本文详细介绍了RuoYi-Vue项目中Swagger3.0的配置过程,包括核心配置类、API文档信息、安全认证、资源映射和安全放行等内容。通过集成Swagger3.0,可以大大提高前后端开发效率,减少接口文档维护成本。希望本文对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言。

点赞、收藏、关注三连,获取更多RuoYi-Vue项目的实用教程!下期预告:RuoYi-Vue前端组件开发指南。

【免费下载链接】RuoYi-Vue :tada: (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本 【免费下载链接】RuoYi-Vue 项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值