繁体   English   中英

当返回类型是 REST 服务中的对象时返回字符串

[英]Returning a string when the return type is an object in a REST service

我正在创建一个 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;
    }

有人知道怎么做吗?

只需返回对象public @ResponseBody Object getUserPath()

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

下面的代码将完成您的工作。 这将返回您的自定义字符串和正确的 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM