java – 从spring控制器返回空JSON以获得void响应

我正在使用Java 8,Tomcat 8,Spring-WebMVC 4.2.2.RELEASE,FasterXML 2.6.3.

我的控制器中有以下方法

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public void updateCurrentUserDetails(@RequestBody final UserDTO userDTO) {
    final UserWithId user = SecurityUtil.getCurrentUser();
    this.userAccountService.updateUserDetails(user.getUserId(), user.getUsername(), userDTO);
}

此方法返回void,该值在空(0字节)响应中解析.但是,连接到服务器的客户端总是希望JSON响应,如果它是空响应.

所以我想配置Spring / Jackson在这种情况下返回{}(2字节).

我已经考虑过在返回无效的调用中返回新的Object(),但IMO这是一个肮脏的问题,必须有更好的东西.

最佳答案
不应该做任何事情.您可以使用204响应代码,该代码是针对您描述的情况而制定的.您甚至不需要ResponseBody注释,只需使用:

@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void updateCurrentUserDetails(@RequestBody final UserDTO userDTO) {
    final UserWithId user = SecurityUtil.getCurrentUser();
    this.userAccountService.updateUserDetails(user.getUserId(), user.getUsername(), userDTO);
}

204 response code

The 204 (No Content) status code indicates that the server has
successfully fulfilled the request and that there is no additional
content to send in the response payload body.

转载注明原文:java – 从spring控制器返回空JSON以获得void响应 - 代码日志