Part14 - Swagger+Apifox

YangeIT大约 5 分钟中州养老AIIOT版本MysqlApifoxHTTPGETPOST

Part14 - Swagger+Apifox

1. 生成接口文档

1.1. Swagger接口文档

前言

image
image

Swagger 是一个开源的 API 设计和文档工具,它可以帮助开发人员更快、更简单地设计、构建、文档化和测试 RESTful API。Swagger 可以自动生成交互式 API 文档、客户端 SDK、服务器 stub 代码等,从而使开发人员更加容易地开发、测试和部署 API。

说明:https://apifox.com/apiskills/what-is-swagger/open in new window

1. 导入依赖(也要清楚一些非必要依赖)

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.5.0</version>
</dependency>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
    <version>2.5.0</version>
</dependency>
  1. 在config包中导入配置类
@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI springShopOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("Spring Boot 中使用 Swagger UI 构建 RESTful API")//文档信息
                        .contact(new Contact().email("798391056@qq.com"))//联系信息
                        .description("中州养老AI+IOT平台提供的 RESTful API")//文档描述
                        .version("v1.0.0")//文档版本
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")))//许可信息
                        .externalDocs(new ExternalDocumentation()//文档外链
                        .description("学习笔记")
                        .url("http://www.yangeit.cn:21010/expand/schoolsx/zzoldpeople20/"));

    }
}

3. 如果存在统一异常处理类,需要加入@Hidden注解,避免报错

@Hidden
@RestControllerAdvice
public class GlobalExceptionHandler {
    //处理异常
    @ExceptionHandler
    public AjaxResult ex(BaseException e){//方法形参中指定能够处理的异常类型
        e.printStackTrace();//打印堆栈中的异常信息
        //捕获到异常之后,响应一个标准的Result
//        if (不友好的信息){
//            return AjaxResult.error("正忙尼! 不用急,稍后再试!!!");
//        }
        return AjaxResult.error(e.getMessage());

    }
}
 














4. 在拦截器配置类中,需要将swagger的拦截器排除掉

@Configuration//告诉Spring这是一个配置类
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    LoginCheckInterceptor loginCheckInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //todo yangeit 添加拦截器  /customer/**
        registry.addInterceptor(loginCheckInterceptor)
                .addPathPatterns("/customer/**")//拦截微信所有请求
                .excludePathPatterns("/customer/user/login",
                                    "/customer/roomTypes",
                                    "/error",
                                    "/swagger-ui/**", "/v3/**");
    }
}


 













5. 访问地址:http://localhost:9995/swagger-ui/index.html

image
image

6. 使用swagger测试获取房型的接口image

1.2. SpringDocOpenAPI常见注解

前言

image
image

从上图我们可以看到,有的方法和模块有中文解释,有的没有,这是怎么实现的呢?

其实可以通过Swagger3的注解来实现(注意:这里和SpringBoot2.0的Swagger2.0不同哦

那有哪些常用的注解呢?👇

1. @Tag注解:

@Tag 用于描述模块,通常用于类上。
常用的属性包括:
    name:表示模块名称。
    description:表示模块的描述。

示例👇 image

  1. @Operation 注解:
@Operation 用于描述单个操作(即 API 端点)。
最常用的属性包括:
    summary:表示操作的摘要,通常不要太长。
    description:用于描述操作的细节,例如限制、返回值等。
    hidden:表示是否隐藏此 API。

示例👇

image
image

3. @Parameter 注解:

@Parameter 用于描述请求参数或响应实体中的属性。
常用的属性包括:
    name:表示参数名称。
    description:表示参数的描述。
    required:表示参数是否为必需的。
    in:表示参数的位置,例如 query、path、header、cookie、body 等。
    schema:表示参数的数据类型和格式。

示例👇 image

4. @Schema 注解:

@Schema 用于描述模型属性,例如请求参数、响应实体等。
常用的属性包括:
    name:表示属性名称。
    title:表示属性的标题。
    description:表示属性的描述。
    type:表示属性的数据类型,例如字符串、整数、布尔值等。
    format:表示属性的格式,例如日期、时间等。
    example:表示属性的示例值。
    required:表示属性是否为必需的。

示例👇

image
image

给每个Controller每个方法都加上注解,可以使用ai来写 👇

image
image
image
image

1.3. apifox软件对接

前言

image
image

apifox官网:https://apifox.com/open in new window

扫码登录
扫码登录
创建团队
创建团队
创建接口文件夹
创建接口文件夹
配置开发环境
配置开发环境
导入接口地址到apifox
导入接口地址到apifox
选择接口文件夹
选择接口文件夹
在配置环境中,设置token
在配置环境中,设置token
测试接口成功
测试接口成功

1.4. apifox完善接口文档

前言

截止到现在为止,我们完成了apifox的导入配置,接下来我们需要导出接口文档,方便我们以后查看。

我们需要给每个接口配上请求参数的示例值和响应的示例值。有助于生成完善的接口文档。

1. 生成请求参数的示例值

image
image

2. 生成响应的示例值image

这样讲所有的接口都完善好,然后导出接口文档,我们看看效果。 导出markdown

markdown接口文档图
markdown接口文档图

好了,大家开始改造把!!!

总结

课堂作业

  1. 思考下,为什么要将接口文档写的这么详细,程序已经完成了,有必要吗??🎤

2. 简历书写和批改简历