[英]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.