There was an unexpected error (type=Bad Request, status=400).以及@RequestBody和@RequestParam区别

男娘i 2022-10-26 14:27 115阅读 0赞

今天在使用spring boot做设备微服务的开发时,报出了标题中的错误,完成的错误信息如下

  1. Whitelabel Error Page
  2. This application has no explicit mapping for /error, so you are seeing this as a fallback.
  3. Tue Feb 02 15:42:15 CST 2021
  4. There was an unexpected error (type=Bad Request, status=400).

翻译最后一句为:发生意外错误(类型=错误的请求,状态= 400) ,如下贴出我的代码

  1. @RequestMapping(value = "/detail", method = RequestMethod.GET)
  2. public ResponseDto getDeviceDetail(
  3. @RequestHeader(name = Constant.HEADER_X_TRACE_ID, required = false) String traceId,
  4. @Validated @RequestBody DetailDeviceRequestBody requestBody,
  5. @PathVariable String requestPath,
  6. @PathVariable String requestCategory
  7. ) {
  8. 。。。。。。
  9. String sn = requestBody.getSn();
  10. if ( isBlank(sn)) {
  11. return new ResponseDto(ErrorResponse.REQUEST_ERROR.getCode(),ErrorResponse.REQUEST_ERROR.getMessage());
  12. }
  13. 。。。
  14. return iDeviceService.getDeviceDetail(deviceEntity);
  15. }

问题出现在这里 @Validated @RequestBody DetailDeviceRequestBody requestBody,,我明明是get请求,却使用@RequestBody去接收数据,然而get请求是没有请求体的,因为报出了这样的,我们可以使用@RequestParam来接收,如下代码所示

  1. @RequestMapping(value = "/detail", method = RequestMethod.GET)
  2. public ResponseDto getDeviceDetail(
  3. @RequestHeader(name = Constant.HEADER_X_TRACE_ID, required = false) String traceId,
  4. @RequestParam(required = false) String sn,
  5. @PathVariable String requestPath,
  6. @PathVariable String requestCategory
  7. ) {
  8. if ( isBlank(sn)) {
  9. return new ResponseDto(ErrorResponse.REQUEST_ERROR.getCode(),ErrorResponse.REQUEST_ERROR.getMessage());
  10. }
  11. 。。。
  12. return iDeviceService.getDeviceDetail(deviceEntity);
  13. }

这样就能轻松地接收get的请求值了。

下面链接是说明@RequestBody和@RequestParam区别:@RequestBody和@RequestParam区别

发表评论

表情:
评论列表 (有 0 条评论,115人围观)

还没有评论,来说两句吧...

相关阅读