springboot 集成 swagger2 3.0.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));
	}

最终效果

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值