Swagger 开发文档

Swagger 是流行的API工具,用于创建交互式文档和客户端SDK。本文介绍Swagger的基础创建,包括依赖和配置,以及Swagger常用注解,如@ApiImplicitParams和@ApiImplicitParam。还讨论了knife4j-Swagger的高级功能,如动态字段注释和安全框架的放行配置。同时提供了解决Swagger页面被拦截问题的方法和返回值动态注解。
摘要由CSDN通过智能技术生成

----- Swagger -----

Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式文档,客户端 SDK 的⾃ 动生成等功能。

Swagger 的目标是为 REST API 定义一个标准的、与语⾔言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过 Swagger 定义,消费者就能与远程的服务互动通过少量的实现逻辑。

Swagger(丝袜哥)是世界上最流行的 API 表达工具。

Swagger 基础创建

Swagger 依赖

<!--Swagger 依赖-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!--Swagger Ui 前端页面-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

SwaggerConfig 配置类

在 SwaggerConfig 的类上添加两个注解:

注解 说明
@Configuration 启动时加载此类
@EnableSwagger2 表示此项目启用 Swagger API 文档功能
package com.apai.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;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
   

    @Bean
    public Docket api() {
   
        return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .select()
            // 此处自行修改为自己的 Controller 包路径。
            .apis(RequestHandlerSelectors.basePackage("com.apai.controller"))
            .paths(PathSelectors.any())
            .build();
    }
    private ApiInfo apiInfo() {
   
        return new ApiInfoBuilder()
            .title("阿派 项目接口文挡")
            .description("XXX Project Swagger2 UserService Interface")
            .termsOfServiceUrl("http://localhost:8080/swagger-ui.html")
            .version("1.0")
            .build();
    }

}

注意: 过滤 | 拦截

如果,你的项目中配置了拦截器,那么拦截器会拦截你的 /swagger-ui.html 请求,从而导致你看不到 swagger 页面。

这种情况下,你需要在你的拦截器的配置中,将 swagger 请求排除在外:

@Configuration
@EnableWebMvc
@ComponentScan("xxx.yyy.zzz.web.controller")
public class SpringWebConfig implements WebMvcConfigurer {
   
    // 暂未验证
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
   
        registry.addInterceptor(new MyInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns(
                    "/swagger-ui.html", 
                    "/swagger/**", 
                    "/swagger-resources/**"
                ).order(1);
    }
}

Swagger 常用注解

Swagger 通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息等,常用注解内容如下:

注解 作用 备注
@Api(tags=“”) 用在请求的类上,表示对类的说明 tags属性:说明该类的作用,可以在UI界面上看到的注解
@ApiOperation 用在请求的方法上,说明方法的用途 value属性: 说明方法的用途、作用,response =“接口返回参数类型”,httpMethod = “接口请求方式”,produces=“请求头输出类型”
@ApiImplicitParams 用在请求的方法上,表示一组参数说明 多个@ApiImplicitParam组合
@ApiImplicitParam 指某个请求参数的各个方面 属性:1.name参数名称 2.value参数说明 3.required参数是否必须 4.allowMultiple=true 表示是数组格式的参数 5.paramType和dataType 如下案例说明,6.example表示参数的默认值
@ApiResponses 用在请求的方法上,表示一组响应 多个@ApiResponse组合
@ApiResponse 用在@ApiResponses中,一般用于表达一个错误的响应信息 code:数字,例如400,message:信息,例如"请求参数没填好",response:抛出异常的类
@ApiModel(value = “理财实体类”) 用在实体类上 实体类相关说明
@ApiModelProperty 用在属性上,描述响应类的属性

请求参数详解

@ApiImplicitParams

  • 用在请求的方法上,表示一组参数说明

  • 多个@ApiImplicitParam组合

@ApiImplicitParams(value = {
   
    @ApiImplicitParam(),
    @ApiImplicitParam()
})
@ApiOperation("查询方法")
@PostMapping("/select")  //或者用getMapping("/select")
public Object select(String name,Integer id){
   
    return name + id;
}

@ApiImplicitParam

指某个请求参数的各个方面

属性:

  • name | 参数名称
  • value | 参数说明
  • required | 参数是否必须
  • allowMultiple=true | 表示是数组格式的参数
  • paramType | 如下案例说明,
  • dataType | 参数类型 实体类则写全路径
  • example | 表示参数的默认值 int类型必须设置默认值

请求 paramType 属性详解

query

普通参数拼接,多个基本类型传参

@ApiImplicitParams(value = {
   
    @ApiImplicitParam(name = "name", value = "用户名", paramType = "query", dataType = "string", example ="xingguo"),
    @ApiImplicitParam(name = "id", value = "id", dataType = "int", example = "23", paramType = "query")
})
@ApiOperation("查询方法")
@GetMapping("/select")
public Object select(String name,Integer id){
   
    return name + id;
}

path

用于restful 风格的请求,且请求参数的获取:@PathVariable 注解接收

@ApiOperation(value = "获取用户信息", produces = "application/json")
@ApiImplicitParams({
   
    @ApiImplicitParam(name = "id", value = "用户Id", required = true, example = "23", dataType = "int", paramType = "path")
})
@GetMapping(value = "/get/{id}")
public Integer getUser(@PathVariable Integer id) {
   
    return id;
}
body(对象类型)

body:放在请求体,请求参数的获取:@RequestBody(代码中接收注解),仅支持post

@ApiOperation(value = "获取用户")
@ApiImplicitParams({
   
    @ApiImplicitParam(name="financing",value = "用户对象",dataType = "com.woniu.entity.financing", paramType = "body"),
})
@PostMapping(value = "/getuser2")
public ResponseResult<String> getUser2(@RequestBody Financing financing){
   
    System.out.println(financing.toString());
    return new ResponseResult<String>(202,"成功了");
}
header

header 用来接收请求头参数,@RequestHeader(代码中接收注解)

@ApiOperation(value = "toke 请求头")
@ApiImplicitParams({
   
    @ApiImplicitParam
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要关闭 Swagger 开发文档,你可以在 Swagger 配置文件中将 enabled 属性设置为 false。例如,在 Spring Boot 中,你可以在 application.properties 文件中添加如下内容: ``` # Turn off Swagger springfox.documentation.swagger.v2.enabled=false ``` 然后重启应用程序即可生效。 此外,你也可以通过编程方式在运行时动态关闭 Swagger。例如,在 Spring Boot 中,你可以使用以下方式关闭 Swagger: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build() .enable(false); } } ``` 这样,当你需要启用 Swagger 时,只需将 enable 方法的参数设置为 true 即可。 ### 回答2: 关闭Swagger开发文档可以通过以下几种方式: 1. 删除Swagger依赖:在项目的构建文件中,移除Swagger相关的依赖。如果使用Maven构建项目,你可以在pom.xml文件中删除Swagger的依赖配置,并重新编译项目。如果使用其他构建工具,也要删除相关配置并重新构建项目。 2. 禁用Swagger配置:如果你想保留Swagger依赖,但不希望在生产环境中使用Swagger开发文档,你可以在项目的配置文件中禁用Swagger。具体的配置方式取决于你所使用的框架和工具,一般来说,可以通过设置配置项或注释来禁用Swagger相关的功能。这样,在生产环境中Swagger的UI和接口文档将不可用。 3. 限制Swagger访问权限:如果你想在部分环境中使用Swagger开发文档,可以通过限制Swagger的访问权限来达到关闭的效果。一种常见的做法是在应用的Web服务器(如Nginx)或网络代理层面配置访问控制规则,限制只有特定IP地址或特定用户可以访问Swagger的UI和接口文档。 4. 使用Swagger注解控制文档生成:Swagger会根据代码中的注解生成接口文档。如果你只想关闭文档生成,但保留Swagger依赖和UI,可以在代码中不使用Swagger的注解。将`@Api`、`@ApiOperation`等相关注解从你的接口和方法中移除,这样Swagger将不再解析和生成接口文档。 综上所述,关闭Swagger开发文档可以通过删除Swagger依赖、禁用配置、限制访问权限和不使用Swagger注解等方式实现。选择适合你项目需求和环境的方式,以达到你所期望的效果。 ### 回答3: 要关闭Swagger开发文档,可以采取以下几个步骤。 第一步,定位到项目中的Swagger配置文件。Swagger通常使用yaml或者json格式的配置文件来定义API文档。可以在项目文件中搜索swagger.yaml或者swagger.json等相关文件。 第二步,打开Swagger配置文件。使用文本编辑器打开找到的Swagger配置文件。 第三步,寻找文档配置项。在Swagger配置文件中,一般会有一个文档相关的配置项,比如"documentation"或者"info"。这个配置项包含了文档的基本信息和显示形式。 第四步,禁用Swagger文档。将文档配置项中的"enabled"或者"enable"的属性值设置为false,即禁用文档功能。如果没有这个属性,可以尝试将文档配置项删除或者注释掉。 第五步,保存并关闭Swagger配置文件。在编辑器中保存对Swagger配置文件的修改,并关闭编辑器。 第六步,重新编译或者重启项目。一些项目在Swagger配置文件修改后需要重新编译,或者重启应用程序,才能生效关闭Swagger开发文档。 完成以上步骤后,Swagger开发文档应该已经被关闭。可以通过访问项目的API地址来验证Swagger文档是否已关闭。如果访问API返回的是实际接口数据而不是Swagger文档,则说明已成功关闭Swagger开发文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值