Swagger配置

文章介绍了如何在JavaMVC项目中使用knife4j集成Swagger来生成和优化API文档,包括添加pom依赖、配置Docket、设置静态资源映射、定义接口注解以及实体类注解,以便于接口调试和生成详细的接口文档,同时提到了Yapi的导入使用。

项目优化Day3-04-Swagger_介绍&使用方式&查看接口文档_哔哩哔哩_bilibili

1、引入pom依赖(knife4j是java MVC框架集成swagger生成api文档的增强解决方案)

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

2.导入knife4j相关配置

 并在当前类下添加如下方法:

/**
 * 以下为swagger创建方法,为死代码,复制粘贴即可
 * @return
 */
@Bean
public Docket creatRestApi(){
    //文档类型
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.lmh.reggie.controller"))  
            .paths(PathSelectors.any())
            .build();
}

private ApiInfo apiInfo(){
    return new ApiInfoBuilder()
            .title("瑞吉外卖") 
            .version("1.0")
            .description("瑞吉外卖接口文档")
            .build();
}

3.静态资源映射(addResourceHandlers方法,否则接口文档页面无法访问,因为项目此时必须登录后才可访问资源)

registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");

4.在LoginCheckFilter中设置不需要处理的请求路径

 启动项目,访问localhost:8080/doc.html 即可

 可在此进行接口方法的调试

 此处可下载接口文档,可在Yapi导入使用

5.通过swagger常用注解定义方法说明

5.1 在实体类上注释(ApiModel,ApiModelProperty)

 注释后重启即可在swagger上看到实体解释信息

 5.2 在接口上注释(Api,ApiOperation)

 重启项目即可看到如下效果:

 

3.3 方法参数注释(ApiImplicitParams,ApiImplicitParam)

require指的是参数不是必需的

 重启项目后即可看到如下效果:

### 配置 Swagger 在项目中的使用 在 Spring Boot 项目中,可以通过多种方式配置 Swagger 来生成和管理 API 文档。以下是详细的配置步骤: #### 1. 引入依赖 首先,在项目的 `pom.xml` 文件中添加 Swagger 的依赖。通常使用的是 `springfox-swagger2` 和 `springfox-swagger-ui` 库[^2]。 ```xml <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> ``` #### 2. 创建 Swagger 配置类 接下来,创建一个 Java 配置类来启用和配置 Swagger。该类需要与 Spring Boot 的启动类处于同一层级或其子包中。 ```java package org.springboot; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.swagger.annotations.ApiOperation; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket swaggerSpringMvcPlugin() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .build(); } } ``` 上述代码启用了 Swagger,并通过 `Docket` Bean 定义了文档的生成规则。这里选择仅扫描带有 `@ApiOperation` 注解的方法 [^4]。 #### 3. 配置跨域支持(可选) 如果前端应用与后端服务不在同一个域名下,需要配置跨域支持。可以在 `SwaggerConfig` 类中添加以下方法: ```java @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/v2/api-docs/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS"); } }; } ``` #### 4. 使用 Swagger 注解 在控制器类和方法上使用 Swagger 注解,以提供更详细的文档信息。常见的注解包括: - **`@ApiModel`**:用于描述模型对象。 - **`@ApiModelProperty`**:用于描述模型属性。 - **`@Api`**:用于描述控制器类的功能。 - **`@ApiOperation`**:用于描述具体的操作。 示例代码如下: ```java @Api(tags = "用户信息") @RestController @RequestMapping("/users") public class UserController { @ApiOperation(value = "查询用户详细信息") @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { // 方法实现 } } ``` #### 5. 启动并访问 Swagger UI 完成上述配置后,启动 Spring Boot 应用程序,并通过以下 URL 访问 Swagger UI: ``` http://localhost:8080/swagger-ui.html ``` 在这个界面中,可以查看所有已定义的 API 接口,并进行测试。 #### 6. 安全控制(可选) 为了增强安全性,可以为 Swagger 配置权限验证。例如,使用 Spring Security 对 `/swagger-ui.html` 路径进行保护: ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/swagger-ui.html").authenticated() .and() .httpBasic(); // 使用 HTTP Basic 认证 } } ``` 通过这种方式,只有经过认证的用户才能访问 Swagger UI 界面 [^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值