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

时间:2015-06-03 12:24:49

标签: java rest exception-handling spring-boot

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

DesignService项目

repository.java

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

UserService

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]点做什么。退出异常或返回空用户对象?
  2. 如何处理[2]任何激活处理/ http状态代码/ ...... ??
  3. 我如何在[1]处理这些例外。我不认为检查用户为null是一个好主意。
  4. *如果我在某些语法中出错,因为我直接输入了它。

1 个答案:

答案 0 :(得分:0)

  1. 返回null,或者如果您使用的是Java 8,则返回空的Optional

  2. 如果未找到任何用户,请返回一个空的响应,其状态为404(NOT_FOUND),即

  3.   

    新的ResponseEntity(HttpStatus.NOT_FOUND);

    1. Catch org.springframework.web.client.HttpClientErrorException
    2. 最后,为什么要POST到只返回资源的端点?你应该做一个GET,从它的外观来看,你的请求映射应该只支持GET(method = RequestMethod.GET)。