【问题标题】:Returning a string when the return type is an object in a REST service当返回类型是 REST 服务中的对象时返回字符串
【发布时间】:2020-09-23 10:52:59
【问题描述】:

我正在创建一个 REST 服务,它返回可以过滤的用户对象。返回用户时,我使用@ResponseBody User。但是当 id 不存在时,我想显示一个字符串说“请提供有效的用户 ID”。当返回类型为 User 时,我该怎么做?

代码:

@GetMapping("/{Id}")
    public @ResponseBody User getUserPath(@PathVariable int Id) {
        User user = userRepository.findById(Id).get();
        if (user==null){
            //return "Please provide a valid user ID"
        }
        return user;
    }

有人知道怎么做吗?

【问题讨论】:

  • 在这种情况下,您应该返回 404。如果您愿意,可以使用该消息。

标签: java spring spring-boot rest intellij-idea


【解决方案1】:

以下代码将完成您的工作。这将返回您的自定义字符串和正确的 HTTP 状态代码。

@GetMapping("/{Id}")
public ResponseEntity<User>  getUserPath(@RequestParam int Id) {

    User user = userRepository.findById(Id).get();
    if (user==null){
        return new ResponseEntity("Please provide a valid user ID", HttpStatus.NOT_FOUND);
    }
    return new ResponseEntity<User>(user, HttpStatus.FOUND);
}

【讨论】:

    【解决方案2】:

    简单地返回对象 public @ResponseBody Object getUserPath()

    更新 1: 恕我直言,在这种情况下更好的是抛出异常,用@ControllerAdvice + @ExceptionHandler 处理它,然后用字符串返回错误

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多