我在未填写必填字段时遇到问题,日志中显示以下异常:
org.springframework.web.HttpMediaTypeNotAcceptableException:找不到可接受的表示
假设我有一个包含如下属性的对象 CodeRequest:
@NotBlank(message = "payloadFormatIndicator.required")
@Size(max = 2, message = "payloadFormatIndicator.size")
private String payloadFormatIndicator;
我的控制器将对象 CodeRequest 作为参数,如下所示:
@PostMapping(value = "/dummy", produces = MediaType.IMAGE_PNG_VALUE)
public ResponseEntity<BufferedImage> generateQRCode(@Valid @RequestBody CodeRequest paymentRequest) throws Exception {
log.debug("generateQRCode with the following request {}", paymentRequest);
return ResponseEntity.status(HttpStatus.OK).body(ipsPaymentService.generateQRCode(paymentRequest));
}
当我将必填字段payloadFormatIndicator
留空时,我希望payloadFormatIndicator.required
在我的回复中收到一条错误消息。
但是,我在日志中收到以下错误消息:
org.springframework.web.HttpMediaTypeNotAcceptableException:找不到可接受的表示
我的异常处理程序如下所示:
@Slf4j
@ControllerAdvice
public class RestControllerExceptionHandler extends ResponseEntityExceptionHandler {
@Override
public ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException exception, HttpHeaders headers,
HttpStatus status, WebRequest request) {
log.error(exception.getMessage(), exception);
ExceptionResponse exceptionResponse = new ExceptionResponse(HttpStatus.BAD_REQUEST,
exception.getBindingResult().getAllErrors().get(0).getDefaultMessage());
return new ResponseEntity<>(exceptionResponse, new HttpHeaders(), exceptionResponse.getHttpStatus());
}
看起来因为方法 generateQRCode 正在返回 ResponseEntity<BufferedImage>
它导致了这个问题,因为对于我控制器上的其他方法,异常处理工作正常。
我正在使用 swagger 测试其余的 API,内容类型如下所示:
知道如何解决吗?