使用自定义消息 return 自定义 ResponseEntity<>(HttpStatus.BAD_REQUEST) 的最简单方法?
Easiest way to return a custom ResponseEntity<>(HttpStatus.BAD_REQUEST) with custom message?
这是我第一次用 Spring Boot 开发 REST API。我想在遇到 Bad Request 400 错误时 return 自定义消息。
我有我的控制器:
@GetMapping("/DetailDossier/{id},{parameters}/")
public ResponseEntity<List<DetailDossierRspn>> DetailDossierQstn(
@PathVariable(value = "id") String[] id, @PathVariable(value = "parameters") String parameters,
throws ParseException {
List<DetailDossierRspn> rspn = new ArrayList<>();
WSDetailDossierService mainDAO = new WSDetailDossierService();
// If Sql result return -> List<DetailDossierRspn>
// If no sql result return null
rspn = mainDAO.initialiserDAO(identifiant, coetb, null);
if (rspn == null) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
return ResponseEntity.ok(rspn);
}
}
我想要 return 400 错误的最简单方法:
ResponseEntity<>(HttpStatus.BAD_REQUEST)
带有自定义消息。
我试图创建一个@ControllerAdvice,但它没有用,因为我的控制器 return a List
有没有办法轻松创建自定义消息?
您需要创建自定义 @ControllerAdvice
:
Specialization of @Component for classes that declare @ExceptionHandler, @InitBinder, or @ModelAttribute methods to be shared across multiple @Controller classes.
扩展 ResponseEntityExceptionHandler
:
A convenient base class for @ControllerAdvice classes that wish to provide centralized exception handling across all @RequestMapping methods through @ExceptionHandler methods.
基本上是这样的:
@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
return new ResponseEntity<>("my custom message", status);
}
}
这是我第一次用 Spring Boot 开发 REST API。我想在遇到 Bad Request 400 错误时 return 自定义消息。
我有我的控制器:
@GetMapping("/DetailDossier/{id},{parameters}/")
public ResponseEntity<List<DetailDossierRspn>> DetailDossierQstn(
@PathVariable(value = "id") String[] id, @PathVariable(value = "parameters") String parameters,
throws ParseException {
List<DetailDossierRspn> rspn = new ArrayList<>();
WSDetailDossierService mainDAO = new WSDetailDossierService();
// If Sql result return -> List<DetailDossierRspn>
// If no sql result return null
rspn = mainDAO.initialiserDAO(identifiant, coetb, null);
if (rspn == null) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
return ResponseEntity.ok(rspn);
}
}
我想要 return 400 错误的最简单方法:
ResponseEntity<>(HttpStatus.BAD_REQUEST)
带有自定义消息。
我试图创建一个@ControllerAdvice,但它没有用,因为我的控制器 return a List
有没有办法轻松创建自定义消息?
您需要创建自定义 @ControllerAdvice
:
Specialization of @Component for classes that declare @ExceptionHandler, @InitBinder, or @ModelAttribute methods to be shared across multiple @Controller classes.
扩展 ResponseEntityExceptionHandler
:
A convenient base class for @ControllerAdvice classes that wish to provide centralized exception handling across all @RequestMapping methods through @ExceptionHandler methods.
基本上是这样的:
@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
return new ResponseEntity<>("my custom message", status);
}
}