如何处理 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]
}
- 如果未找到用户,在第 [3] 点做什么。抛出异常或 return 空用户对象?
- 在 [2] 处做什么任何异常处理/http 状态代码/...??
- 我如何处理 [1] 中的这些异常。我不认为将用户检查为 null 是个好主意。
* 如果我直接输入的某些语法有误,请原谅。
Return null,或者如果你在 Java 8,一个空的 Optional
如果未找到用户,return 具有 404 (NOT_FOUND) 状态的空响应,即
new ResponseEntity(HttpStatus.NOT_FOUND);
- 赶上org.springframework.web.client.HttpClientErrorException
最后,您为什么要发布到只有 return 资源的端点?你应该做一个 GET,从它的外观来看,你的请求映射应该只支持 GET (method = RequestMethod.GET).
我有两个基于 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]
}
- 如果未找到用户,在第 [3] 点做什么。抛出异常或 return 空用户对象?
- 在 [2] 处做什么任何异常处理/http 状态代码/...??
- 我如何处理 [1] 中的这些异常。我不认为将用户检查为 null 是个好主意。
* 如果我直接输入的某些语法有误,请原谅。
Return null,或者如果你在 Java 8,一个空的 Optional
如果未找到用户,return 具有 404 (NOT_FOUND) 状态的空响应,即
new ResponseEntity(HttpStatus.NOT_FOUND);
- 赶上org.springframework.web.client.HttpClientErrorException
最后,您为什么要发布到只有 return 资源的端点?你应该做一个 GET,从它的外观来看,你的请求映射应该只支持 GET (method = RequestMethod.GET).