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

里面具体的常量都是 可以自定义的,这里就不黏贴出来了,要的小伙伴们可以私信我。
我的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;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将全局异常提示配置Swagger上,可以使用Spring Boot提供的`@ControllerAdvice`注解来实现全局异常处理,并通过Swagger提供的`@ExceptionHandler`注解将其配置Swagger上。具体步骤如下: 1. 创建一个全局异常处理器类,使用`@ControllerAdvice`注解标识该类为全局异常处理器。 ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleException(Exception ex) { ErrorResponse error = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getMessage()); return new ResponseEntity<>(error, HttpStatus.INTERNAL_SERVER_ERROR); } } ``` 在上面的代码中,我们定义了一个`handleException()`方法来处理`Exception`类型的异常,并将异常信息封装到一个`ErrorResponse`对象中返回。 2. 创建一个`ErrorResponse`类,用于封装异常信息。 ```java public class ErrorResponse { private int code; private String message; public ErrorResponse() {} public ErrorResponse(int code, String message) { this.code = code; this.message = message; } // getter and setter methods } ``` 3. 在Swagger配置类中添加一个`globalResponseMessage()`方法,用于配置全局响应消息。 ```java @Configuration @EnableSwagger2 public class SwaggerConfig { // ... private List<ResponseMessage> globalResponseMessage() { List<ResponseMessage> responseMessages = new ArrayList<>(); responseMessages.add(new ResponseMessageBuilder() .code(HttpStatus.INTERNAL_SERVER_ERROR.value()) .message("系统异常") .responseModel(new ModelRef("ErrorResponse")) .build()); return responseMessages; } @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build() .globalResponseMessage(RequestMethod.GET, globalResponseMessage()) .globalResponseMessage(RequestMethod.POST, globalResponseMessage()) .globalResponseMessage(RequestMethod.PUT, globalResponseMessage()) .globalResponseMessage(RequestMethod.DELETE, globalResponseMessage()) .globalResponseMessage(RequestMethod.PATCH, globalResponseMessage()) .globalResponseMessage(RequestMethod.OPTIONS, globalResponseMessage()) .globalResponseMessage(RequestMethod.HEAD, globalResponseMessage()) .apiInfo(apiInfo()); } } ``` 在上面的代码中,我们定义了一个`globalResponseMessage()`方法,用于配置全局响应消息。在该方法中,我们创建了一个`ResponseMessage`对象,并设置了响应码、响应消息和响应模型。然后,我们在`Docket`配置中调用`globalResponseMessage()`方法,将全局响应消息配置Swagger中。 4. 在Swagger配置类中添加一个`additionalModels()`方法,用于将`ErrorResponse`类注册到Swagger中。 ```java @Configuration @EnableSwagger2 public class SwaggerConfig { // ... private List<Model> additionalModels() { List<Model> models = new ArrayList<>(); models.add(new ModelBuilder() .name("ErrorResponse") .addProperty(new PropertyBuilder() .name("code") .type(ModelRef.INT32) .build()) .addProperty(new PropertyBuilder() .name("message") .type(ModelRef.STRING) .build()) .build()); return models; } @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build() .globalResponseMessage(RequestMethod.GET, globalResponseMessage()) .globalResponseMessage(RequestMethod.POST, globalResponseMessage()) .globalResponseMessage(RequestMethod.PUT, globalResponseMessage()) .globalResponseMessage(RequestMethod.DELETE, globalResponseMessage()) .globalResponseMessage(RequestMethod.PATCH, globalResponseMessage()) .globalResponseMessage(RequestMethod.OPTIONS, globalResponseMessage()) .globalResponseMessage(RequestMethod.HEAD, globalResponseMessage()) .additionalModels(additionalModels()) .apiInfo(apiInfo()); } } ``` 在上面的代码中,我们定义了一个`additionalModels()`方法,用于将`ErrorResponse`类注册到Swagger中。在该方法中,我们创建了一个`Model`对象,并设置了模型名称和模型属性。然后,我们在`Docket`配置中调用`additionalModels()`方法,将`ErrorResponse`类注册到Swagger中。 5. 运行项目,访问Swagger UI界面,即可看到全局异常提示信息已经成功配置Swagger上。 参考链接:[Spring Boot全局异常处理与Swagger集成](https://www.jianshu.com/p/d4d1445fd596)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值