spring-boot之接口文档Swagger配置使用

Swagger

前后端分离
Vue + SpringBoot
后端时代:前端只用管理静态页面; html==> 后端。模板引擎JSP =>后端是主力
前后端分离式时代:
●后端:后端控制层,服务层,数据访问层[后端团队]
●前端:前端控制层,视图层[前端团队]
。伪造后端数据,json。 已经存在了,不需要后端,前端工程依旧能够跑起来
●前端后如何交互? ===> API
●前后端相对独立,松耦合;
●前后端甚至可以部署在不同的服务器上;
I

官网https://swagger.io/

在项目使用Swagger需要springbox;
●swagger2
●ui

SpringBoot集成Swagger

1,新建一个springboot-web项目

2,导入maven

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version>
</dependency>

spring boot老版本使用以上配置

或者

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>

3.编写一-个Hello工程
4.配置Swagger ==> Config

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableOpenApi
public class SwaggerConfig {
}

访问地址http://localhost:8080/swagger-ui/

使用swagger3出现Failed to start
bean‘documentationPluginsBootstrapper 错误,还可以在application.properties里面加"spring.mvc.pathmatch.matching-strategy= ANT_PATH_MATCHER"

在这里插入图片描述

配置Swagger信息

默认调用的是ApiInfo里面的

this.apiInfo = ApiInfo.DEFAULT;

public static final Contact DEFAULT_CONTACT = new Contact("", "", "");
static {DEFAULT = new ApiInfo("Api Documentation", "Api Documentation", "1.0", "urn:tos", DEFAULT_CONTACT, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList());
}
@Configuration
@EnableOpenApi
public class SwaggerConfig {//配置了Swagger的Docker的bean实例,替换默认值  this.apiInfo = ApiInfo.DEFAULT;/* static {DEFAULT = new ApiInfo("Api Documentation", "Api Documentation", "1.0", "urn:tos", DEFAULT_CONTACT, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList());}*/@Beanpublic Docket docket(){return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo());}//配置Swagger信息=apiInfoprivate ApiInfo apiInfo(){//作者信息Contact contact = new Contact("陈平安", "urn:tos", "2188671488.com");return new ApiInfo("陈平安的Swagger API文档","有不开心,也有在努力生活","1.0","urn:tos",contact,/* DEFAULT_CONTACT,*/"Apache 2.0","http://www.apache.org/licenses/LICENSE-2.0",new ArrayList());}
}

在这里插入图片描述

Swagger配置扫描接口

Docket.select()

@Bean
public Docket docket(){return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select()//requestHandler ->//RequestHandlerSelectors 配置要扫描接口的方式//basePackage("")指定扫描的包//any()扫描全部//none()都不扫描//withClassAnnotation 扫描类上的注解 withClassAnnotation.(RestController.class)//withMethodAnnotation 扫描方法上的注解 withMethodAnnotation.(GetMapping.class).apis(RequestHandlerSelectors.basePackage("com.controller")).//过滤什么路径paths(PathSelectors.ant("/com/**")).build();
}

配置是否启动swagger

@Bean
public Docket docket(){return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).enable(true).//enable是否启动swagger, 如果为False, 则swagger不能再浏览器中访问select()//requestHandler ->//RequestHandlerSelectors 配置要扫描接口的方式//basePackage("")指定扫描的包//any()扫描全部//none()都不扫描//withClassAnnotation 扫描类上的注解 withClassAnnotation.(RestController.class)//withMethodAnnotation 扫描方法上的注解 withMethodAnnotation.(GetMapping.class).apis(RequestHandlerSelectors.basePackage("com.controller")).//过滤什么路径//paths(PathSelectors.ant("/com/**")).build();
}
我只希望我的Swagger在生产环境中使用,在发布的时候不使用

●判断是不是生产环境flag = false
●注入enable (flag)

@Bean                    //获取项目环境
public Docket docket(Environment environment){//设置要显示的Swagger环境Profiles profiles = Profiles.of("dev","test");//environment.acceptsProfiles 判断是否处在自己设定的环境当中boolean flag = environment.acceptsProfiles(profiles);return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).//enable(true).//enable是否启动swagger, 如果为False, 则swagger不能再浏览器中访问enable(flag).select().apis(RequestHandlerSelectors.basePackage("com.controller")).build();
}
application.properties
spring.profiles.active=dev

applicationdev.properties

server.port=8081

配置API文档分组

groupName("陈平安")
配置多个分组:多个Docket实例既可
@Bean
public Docket docket1(){return  new Docket(DocumentationType.OAS_30).groupName("A");
}
@Bean
public Docket docket2(){return  new Docket(DocumentationType.OAS_30).groupName("B");
}
@Bean
public Docket docket3(){return  new Docket(DocumentationType.OAS_30).groupName("C");
}
实体类配置

@Api(tags = “”)

类注释

@ApiModel(“”)

方法注释

@ApiOperatio

//@Api(注释)
@ApiModel("用户类")
public class User {@ApiModelProperty("用户名")public  String username;@ApiModelProperty("密码")public String password;}
controller
@Api(tags = "HelloController控制类")
@RestController
public class HelloController {@GetMapping( value = "/hello")public  String hello(){return "hello";}//只要我们的接口中,返回值中存在实体类,他就会被扫描到swagger中@GetMapping( value = "/user")public User user(){return new User();}//Operation接口,不是放在类上的,是方法// @ApiOperation("hello控制类")@GetMapping(value = "/hello2")public  String hello2(@ApiParam("用户名") String  username){return "hello" + username;}@PostMapping( value = "/postt")public  User postt(@ApiParam("用户名") User user){return  user;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/578000.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

List操作add,clear,addall报错UnsupportedOperationException的解决办法

ArrayList和Arrays.ArrayList是两码事 ArrayList 支持 add&#xff0c;clear&#xff0c;addall Arrays.ArrayList不支持add&#xff0c;clear&#xff0c;addall 这个方法的使用时候&#xff0c;传递的数组必须是对象数组&#xff0c;而不是基本数据类型 JDK源码 /** *返回由…

SAMRTFORMS 转换PDF 发送邮件

最终成果&#xff1a; *&---------------------------------------------------------------------**& Report ZLC_FIND_EXIT*&---------------------------------------------------------------------**&根据T-CODE / 程序名查询出口、BADI增强*&-------…

钉钉 AI 升级多种功能;智谱AI PC智能助手发布;百度回应与苹果合作

▶ 钉钉 AI 升级上线多种功能 3 月 28 日&#xff0c;钉钉 AI 助理升级。升级后上线了图片理解、文档速读、工作流等产品能力&#xff0c;率先探索多模态、长文本与 RPA 技术在 AI 应用的落地。 基于阿里通义千问大模型&#xff0c;升级后的钉钉 AI 助理可以做到&#xff1a; …

【昇腾系列产品应用】英码科技EA500I边缘计算盒子接口使用示例和目标检测算法演示(附视频)

EA500I是英码科技联合华为昇腾精心打造的AI边缘计算盒子&#xff0c;其搭载昇腾310系列处理器&#xff0c;可提供20TOPS INT8 的计算能力&#xff0c;并设计了丰富的外围接口&#xff0c;包括Type-C系统调试口、LINE音频接口、USB3.0*2、千兆LAN*8、WAN*1、5G/4G、GNSS天线口、…

每天五分钟深度学习:使用神经网络完成人脸的特征点检测

本文重点 我们上一节课程中学习了如何利用神经网络对图片中的对象进行定位,也就是通过输出四个参数值bx、by、bℎ和bw给出图片中对象的边界框。 本节课程我们学习特征点的检测,神经网络可以通过输出图片中对象的特征点的(x,y)坐标来实现对目标特征的识别,我们看几个例子。…

用html写一个贪吃蛇游戏

<!DOCTYPE html> <html> <head><title>贪吃蛇</title><meta charset"UTF-8"><meta name"keywords" content"贪吃蛇"><meta name"Description" content"这是一个初学者用来学习的小…

【算法】双指针

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 一、移动零二、复写零三、快乐数四、盛最多水的容器五、有效三角形的个数六、和为s的两个数字七、三数之和八…

囊括所有大模型:高质量中文预训练模型大模型多模态模型大语言模型集合

在自然语言处理领域中&#xff0c;预训练语言模型&#xff08;Pretrained Language Models&#xff09;已成为非常重要的基础技术&#xff0c;本仓库主要收集目前网上公开的一些高质量中文预训练模型、中文多模态模型、中文大语言模型等内容(感谢分享资源的大佬)&#xff0c;并…

Intel Arc显卡安装Stable Diffusion

StableDiffusion是一种基于深度学习的文本到图像生成模型&#xff0c;于2022年发布。它主要用于根据文本描述生成详细图像&#xff0c;也可应用于其他任务&#xff0c;如内补绘制、外补绘制和在提示词指导下生成图像翻译。通过给定文本提示词&#xff0c;该模型会输出一张匹配提…

13-API风格(下):RPCAPI介绍

RPC在Go项目开发中用得也非常多&#xff0c;需要我们认真掌握。 RPC介绍 根据维基百科的定义&#xff0c;RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;即远程过程调用&#xff0c;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机…

Java项目实战笔记--基于SpringBoot3.0开发仿12306高并发售票系统--(二)项目实现-第五篇-核心功能车票预定开发及nacos集成

本文参考自 Springboot3微服务实战12306高性能售票系统 - 慕课网 (imooc.com) 本文是仿12306项目实战第&#xff08;二&#xff09;章——项目实现 的第五篇&#xff0c;本篇讲解该项目的核心功能——余票查询、车票预定功能的基础版开发&#xff0c;以及讲解项目与Nacos的集成…

【保姆级】2024年最新Onlyfans使用订阅教程

【必看】开通步骤 订阅OnlyFans的步骤简要总结如下&#xff1a; 开通虚拟信用卡&#xff1a;虚拟信用卡开通使用教程。开卡后&#xff0c;进入首页&#xff0c;就能看到自己的虚拟信用卡信息把虚拟信用卡的信息填写到OnlyFans绑定信用卡界面就OK了 从上面的链接进入开卡费可…