热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swagger3设置值可以为空_Swagger3使用

swagger是干嘛的不是本说明介绍的内容,请自行百度。本说明旨在快速上手使用swagger生成接口文档,swagger3真香!ÿ

swagger是干嘛的不是本说明介绍的内容,请自行百度。

本说明旨在快速上手使用swagger生成接口文档,swagger3真香!!!

一、依赖

添加依赖和spring-boot-starter-parent的版本有关,自动引入的spring-plugin-core包版本不一致会导致项目跑不起来,这里是个大坑。

1.1、2.1.x版本

io.springfox

springfox-boot-starter

3.0.0

spring-plugin-core

org.springframework.plugin

org.springframework.plugin

spring-plugin-core

2.0.0.RELEASE

1.2、2.3.x版本

io.springfox

springfox-boot-starter

3.0.0

二、配置

2.1、启动类

启动类添加@EnableOpenApi注解,然并卵,经过测试不加也可以(黑人问号脸.jpg),到底加还是不加,看你心情吧。

@EnableOpenApi

@SpringBootApplication

public class Swagger3DemoApplication {

public static void main(String[] args) {

SpringApplication.run(Swagger3DemoApplication.class, args);

}

}

2.2、swagger配置

可以根据Environment和Profiles对象来控制不同环境文档地址是否对外暴漏

@Configuration

public class SwaggerConfig {

@Bean

public Docket initDocket(Environment env) {

//设置要暴漏接口文档的配置环境

Profiles profile = Profiles.of("dev", "test");

boolean flag = env.acceptsProfiles(profile);

return new Docket(DocumentationType.OAS_30)

.apiInfo(apiInfo())

.enable(flag)

.select()

.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

.paths(PathSelectors.any())

.build();

}

private ApiInfo apiInfo() {

return new ApiInfoBuilder()

.title("Swagger3-Demo接口文档")

.description("技术支持-云嘉健康技术团队")

.contact(new Contact("云嘉健康技术团队", "http://www.yunjiacloud.com", "duchong@yunjiacloud.com "))

.version("1.0")

.build();

}

}

三、常用注解

3.1、类

@Api():表示这个类是 swagger 资源

tags:表示说明内容,只写 tags 就可以省略属性名

value:同样是说明,不过会被 tags 替代,没卵用

3.2、方法上

@ApiOperation() :对方法的说明,注解位于方法上

value:方法的说明

notes:额外注释说明

response:返回的对象

tags:这个方法会被单独摘出来,重新分组,若没有,所有的方法会在一个Controller分组下

3.3、方法入参

@ApiParam():对方法参数的具体说明,用在方法入参括号里,该注解在post请求参数时,参数名不显示

name:参数名

value:参数说明

required:是否必填

@ApiImplicitParam对方法参数的具体说明,用在方法上@ApiImplicitParams之内,该注解在get,post请求参数时,参数名均正常显示

name 参数名称

value 参数的简短描述

required 是否为必传参数

dataType 参数类型,可以为类名,也可以为基本类型(String,int、boolean等)指定也不起作用,没卵用

paramType 参数的传入(请求)类型,可选的值有path, query, body, header or form。

3.4、实体

@ApiModel描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)

value model的别名,默认为类名

description model的详细描述

@ApiModelProperty描述一个model的属性

value 属性简短描述

example 属性的示例值

required 是否为必须值

3.5、header参数

@ApiImplicitParams({ @ApiImplicitParam(paramType="header",name="USERTOKEN",dataType="String",required=true,value="用户token")

})

3.6、file入参

需要使用@RequestPart 注解

@ApiOperation(value = "上传文件接口",notes = "上传文件接口")

@ApiImplicitParams({

@ApiImplicitParam(name = "name", value = "上传人")

})

@PostMapping(value = "/uploadFile")

public String uploadFile(@RequestParam("name") String name,@RequestPart("file") MultipartFile file){

}

四、拦截器放行

若项目中有使用拦截器,放行以下路径

@Configuration

public class WebConfig implements WebMvcConfigurer {

@Autowired

TokenInterceptor tokenInterceptor;

/**

* 拦截器

* @param registry

*/

@Override

public void addInterceptors(InterceptorRegistry registry) {

// 注册token拦截器

registry.addInterceptor(tokenInterceptor)

.addPathPatterns("/**")

.excludePathPatterns("/**/swagger-ui/**")

.excludePathPatterns("/**/swagger-resources/**")

.excludePathPatterns("/**/v3/**")

;

}

}

五、文档访问地址

http://ip:port/context-path/swagger-ui/

http://ip:port/context-path/swagger-ui/index.html

六、统一返回值问题

若项目中使用了统一返回值的包装类例如BaseResponse,方法返回时加上泛型,

例如返回 BaseResponse

七、完整demo



推荐阅读
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • ESP32 IRAM 内存优化策略与实践总结
    本文总结了针对ESP32 IRAM内存溢出问题的优化策略与实践经验。通过详细分析ESP32的内存结构和IRAM分配机制,提出了一系列有效的解决方案,包括代码优化、内存管理技巧和编译器配置调整,旨在帮助开发者有效解决`.espressif/tools/xtensa-esp32-elf/esp-2`等类似错误,提升系统性能和稳定性。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 状态模式在软件设计中的应用与实现
    本文以酒店管理系统为例,探讨了状态模式在软件设计中的应用与实现。酒店房间的状态包括空闲、已预订和已入住,这些状态之间可以相互转换。通过引入状态模式,系统能够更加灵活地管理和响应不同状态下的操作,提高了代码的可维护性和扩展性。此外,状态模式还简化了状态转换的逻辑处理,使得系统的整体架构更为清晰和高效。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文探讨了在Lumen框架中实现自定义表单验证功能的方法与挑战。Lumen的表单验证机制默认返回无状态的JSON格式API响应,这给初学者带来了一定的难度。通过深入研究Validate类,作者分享了如何有效配置和使用自定义验证规则,以提升表单数据的准确性和安全性。 ... [详细]
  • 利用Swiss数据集进行多元线性回归分析,首先通过散点图矩阵(pairs plot)初步探索各变量之间的关系。接着,绘制残差图以评估模型的拟合效果和假设条件的合理性,进一步诊断和验证模型的有效性。通过这些图形工具,可以更深入地理解模型的性能和潜在问题。 ... [详细]
  • 深入解析 C 语言与 C++ 之间的差异及关联
    深入解析 C 语言与 C++ 之间的差异及关联 ... [详细]
  • 深入解析Spring Boot自动配置机制及其核心原理
    Spring Boot 的自动配置机制是其核心特性之一,旨在简化开发过程并提高效率。本文将深入探讨这一机制的工作原理,解释其如何通过智能化的类路径扫描和条件注解实现自动装配。通过对 Spring Boot 自动配置的详细解析,读者将能够更好地理解和应用这一强大功能,从而在实际项目中更加高效地利用 Spring Boot。 ... [详细]
author-avatar
吃饭睡觉v
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有