springboot 集成 swagger2 3.0.0 版本,并且授权和统一接口状态码显示

1 篇文章 0 订阅
1 篇文章 0 订阅

在这里插入图片描述

swagger2 2.xx 版本bug太多了,要么显示数据异常,经常报错,最新出来了 3.0 ,果断抛弃 2x系列。看新的接口文档,研究了很久才弄出来,麻烦各位小伙伴点个赞

引入pom文件

这里的引入依赖和以前不一样,现在全新的依赖,是和springboot 相结合

<!-- SpringBoot整合springfox-swagger3 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

config配置文件

@EnableOpenApi
@Configuration
public class SwaggerConfig {

	@Bean
	public Docket api() {
		return new Docket(DocumentationType.OAS_30)
				//设置全局接口显示状态码
				.globalResponses(HttpMethod.GET,globalResponse())
				.globalResponses(HttpMethod.POST,globalResponse())
				.globalResponses(HttpMethod.DELETE,globalResponse())
				.globalResponses(HttpMethod.PUT,globalResponse())
				//设置基础信息
				.apiInfo(apiInfo())
				.select()
				//配置哪些注解
				.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
				.apis(RequestHandlerSelectors.any())
				.build()
				//配置统一授权登录
				.securitySchemes(securitySchemes())
				.securityContexts(securityContexts());

	}

基础信息配置

// API基础信息定义(就是更新Swagger默认页面上的信息)
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				.title("Swagger3 接口文档测试")
				.description("文档描述:更多问题,请联系开发者")
				.contact(new Contact("fangh(name)", "https://swagger.io/docs/specification/describing-parameters/", "335035364@qq.com(email)"))
				.version("1.0")
				.build();
	}

全局状态配置

状态码不需要和我的一致,每个项目定义的状态码不一样,可以根据自己的需求自定义一些状态,我这里只是简单列举一部分可能存在的异常。

public List<Response> globalResponse() {
		List<Response> responseMessageList = Lists.newArrayList();

		//请求成功
		Response successResponse = new ResponseBuilder()
				.code(String.valueOf(SysCode.SUCCESS))
				.description("request success.")
				.isDefault(true)
				.build();
		responseMessageList.add(successResponse);
		//请求失败
		Response failResponse = new ResponseBuilder()
				.code(String.valueOf(SysCode.FAIL))
				.description("request fail.")
				.build();
		responseMessageList.add(failResponse);

		//请求异常
		Response exceptionResponse = new ResponseBuilder()
				.code(String.valueOf(SysCode.ERROR))
				.description("request exception.")
				.build();
		responseMessageList.add(exceptionResponse);

		//登录
		SysCode.Login[] logins = SysCode.Login.values();
		for (SysCode.Login login : logins) {
			Response loginResponse = new ResponseBuilder()
					.code(String.valueOf(login.getCode()))
					.description(login.getMsg())
					.build();
			responseMessageList.add(loginResponse);
		}

		//前端
		SysCode.Front[] fronts = SysCode.Front.values();
		for (SysCode.Front front : fronts) {
			Response frontResp = new ResponseBuilder()
					.code(String.valueOf(front.getCode()))
					.description(front.getMsg())
					.build();
			responseMessageList.add(frontResp);
		}

		//数据库
		SysCode.Database[] databases = SysCode.Database.values();
		for (SysCode.Database database : databases) {
			Response databaseResponse = new ResponseBuilder()
					.code(String.valueOf(database.getCode()))
					.description(database.getMsg())
					.build();
			responseMessageList.add(databaseResponse);
		}

		return responseMessageList;
	}

统一授权登录

//设置头
	private List<SecurityScheme> securitySchemes() {
		return newArrayList(
				new ApiKey(AccessToken.getKey(), AccessToken.getKey(), "header"));
	}

	//设置请求头中携带token
	private List<SecurityContext> securityContexts() {
		return newArrayList(
				SecurityContext.builder()
						.securityReferences(defaultAuth())
						.build()
		);
	}
	List<SecurityReference> defaultAuth() {
		AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
		AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
		authorizationScopes[0] = authorizationScope;
		return newArrayList(
				new SecurityReference("Authorization", authorizationScopes));
	}

最终效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现springboot整合swagger2 3.0.0版本,你需要按照以下步骤操作: 1. 创建一个maven项目并引入spring-boot-starter-web和springfox-boot-starter依赖。在pom.xml文件中添加以下代码: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- <version>2.5.6</version> --> <!-- <version>2.6.3</version> --> <!-- <version>2.6.5</version> --> <version>2.7.3</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.26</version> </dependency> ``` 2. 在application.yml配置文件中添加以下内容: ```yaml spring: mvc: pathmatch: matching-strategy: ant_path_matcher ``` 3. 创建启动类,并在其中添加`@EnableSwagger2`注解。例如: ```java @SpringBootApplication @EnableSwagger2 public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 这样就完成了springboot整合swagger2 3.0.0版本的配置。你可以根据需要在项目中编写相应的接口文档注解以及其他相关配置。如果需要更详细的操作步骤和示例代码,你可以参考中提供的链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Springboot整合Swagger2(3.0.0版本)](https://blog.csdn.net/mo_sss/article/details/130820204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Springboot整合Swagger UI 3.0.0 版本](https://blog.csdn.net/qq_42102911/article/details/126410050)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值