默认的全局异常提示需要怎样才能配置到swagger上
时间: 2024-04-22 13:23:35 浏览: 63
要将全局异常提示配置到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)
阅读全文