@RequestBody可以在内部传递null值吗



我有一个post方法提供:

@PostMapping("/products")
public ResponseEntity<Object> newProduct(@RequestBody ProductDto newProduct) {
try {
if (newProduct == null) {
return new ResponseEntity<>(ApiResponseMessage.getGenericApiResponse(Boolean.FALSE, HttpStatus.BAD_REQUEST,
MessageConstant.EMPTY_REQUEST_BODY_MSG), new HttpHeaders(), HttpStatus.BAD_REQUEST);
}
Product createProduct = productService.createProduct(newProduct);
if (createProduct != null) {
return new ResponseEntity<>(createProduct, new HttpHeaders(), HttpStatus.CREATED);
} else {
return new ResponseEntity<>(ApiResponseMessage.getGenericApiResponse(Boolean.FALSE, HttpStatus.UNPROCESSABLE_ENTITY,
MessageConstant.PRODUCT_CAN_NOT_CREATED_MSG), new HttpHeaders(), HttpStatus.UNPROCESSABLE_ENTITY);
}
} catch (Exception ex) {
log.error(MessageConstant.INTERNAL_SERVER_ERROR_MSG + ex.getMessage());
return new ResponseEntity<>(ApiResponseMessage.getInternalServerError(), new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}

我认为这个检查是不相关的,我们不需要它。因为不可能在方法内部传递null值。

if (newProduct == null) {
return new ResponseEntity<> (ApiResponseMessage.getGenericApiResponse(Boolean.FALSE, HttpStatus.BAD_REQUEST,
MessageConstant.EMPTY_REQUEST_BODY_MSG), new HttpHeaders(), HttpStatus.BAD_REQUEST);
}

这是正确的吗?

如果您只使用@RequestBody,那么如果您没有通过ProductDto,则在客户端工具(如邮差或其他工具(中获取以下异常,因此不需要检查NULL。

{
"timestamp": "2020-11-17T06:19:18.268+00:00",
"status": 400,
"error": "Bad Request",
"message": "",
"path": "/products"
}

也许你可以试试@Valid,它可能更好

最新更新