swagger 全局异常和全局登录配置

  • Post author:
  • Post category:其他


里面具体的常量都是 可以自定义的,这里就不黏贴出来了,要的小伙伴们可以私信我。

我的maven依赖:

<swagger.fox.version>2.9.2</swagger.fox.version>
 <!-- swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.fox.version}</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.fox.version}</version>
        </dependency>
@Configuration
@Profile({"pro","dev"})
public class SwaggerConfig {

	public static final String clzName = RestResponse.class.getSimpleName();

	@Bean
	public Docket api() {
		return new Docket(DocumentationType.SWAGGER_2)
				.globalResponseMessage(RequestMethod.GET,globalResponse())
				.globalResponseMessage(RequestMethod.POST,globalResponse())
				.globalResponseMessage(RequestMethod.PUT,globalResponse())
				.globalResponseMessage(RequestMethod.DELETE,globalResponse())
				.useDefaultResponseMessages(false)
				.select()
				.apis(RequestHandlerSelectors.any())
				.paths(Predicates.not(PathSelectors.regex("/error.*")))
				.paths(PathSelectors.regex("^(?!auth).*$"))
				.build()
				.securitySchemes(securitySchemes())
				.securityContexts(securityContexts())
				;
	}
	//全局异常
	private List<ApiKey> securitySchemes() {
		return newArrayList(
				new ApiKey(AccessToken.getKey(), AccessToken.getKey(), "header"));
	}
	private List<SecurityContext> securityContexts() {
		return newArrayList(
				SecurityContext.builder()
						.securityReferences(defaultAuth())
						.forPaths(PathSelectors.regex("^(?!auth).*$"))
						.build()
		);
	}
	List<SecurityReference> defaultAuth() {
		AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
		AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
		authorizationScopes[0] = authorizationScope;
		return newArrayList(
				new SecurityReference("Authorization", authorizationScopes));
	}

	public  List<ResponseMessage> globalResponse(){
		List<ResponseMessage> responseMessageList = Lists.newArrayList();
		//通用异常
		ResponseMessage fail = new ResponseMessageBuilder()
				.code(SysCode.FAIL).message("请求失败")
				.responseModel(new ModelRef(clzName)).build();
		responseMessageList.add(fail);

		//登录异常
		SysCode.Login[] logins = SysCode.Login.values();
		for (SysCode.Login login: logins) {
			ResponseMessage loginResponse = new ResponseMessageBuilder()
					.code(login.getCode())
					.message(login.getMsg())
					.responseModel(new ModelRef(clzName)).build();
			responseMessageList.add(loginResponse);
		}

		//前端请求异常
		SysCode.Front[] fronts = SysCode.Front.values();
		for (SysCode.Front front:fronts) {
			ResponseMessage frontResp = new ResponseMessageBuilder()
					.code(front.getCode())
					.message(front.getMsg())
					.responseModel(new ModelRef(clzName)).build();
			responseMessageList.add(frontResp);
		}

		//数据库异常
		SysCode.Database[] databases = SysCode.Database.values();
		for (SysCode.Database database: databases) {
			ResponseMessage databaseResponse = new ResponseMessageBuilder()
					.code(database.getCode())
					.message(database.getMsg())
					.responseModel(new ModelRef(clzName)).build();
			responseMessageList.add(databaseResponse);
		}

		return responseMessageList;
	}



版权声明:本文为fanghuainihao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。