如何处理 spring REST Web 服务之间的异常

How to handle exception between spring REST web services

我有两个基于 Spring 引导、REST 和 MVC 的 Web 服务。第一个服务 (DesignService) 项目调用第二个服务 (UserService) 项目,将电子邮件作为参数传递并获取用户对象 (User.java)。找不到用户如何处理

设计服务项目

repository.java

@Autowired
RestTemplate restTemplate;
getUser(String email){
    restTemplate.postForObject("url for User service",email,User.class); //calls User service for Object[1]
}

用户服务

UserController.java

@RequestMapping()
public ResponseEntity<User> getUser(@RequestBody String email){
    User user = repository.getUser(email); //return a user object from DB
    return new ResponseEntity<User>(user);[2]
}

Repository.java

public User getUser(String email){
//query db for user 
return user; //what to return if no user is found [3]
}
  1. 如果未找到用户,在第 ​​[3] 点做什么。抛出异常或 return 空用户对象?
  2. 在 [2] 处做什么任何异常处理/http 状态代码/...??
  3. 我如何处理 [1] 中的这些异常。我不认为将用户检查为 null 是个好主意。

* 如果我直接输入的某些语法有误,请原谅。

  1. Return null,或者如果你在 Java 8,一个空的 Optional

  2. 如果未找到用户,return 具有 404 (NOT_FOUND) 状态的空响应,即

new ResponseEntity(HttpStatus.NOT_FOUND);

  1. 赶上org.springframework.web.client.HttpClientErrorException

最后,您为什么要发布到只有 return 资源的端点?你应该做一个 GET,从它的外观来看,你的请求映射应该只支持 GET (method = RequestMethod.GET).