Spring MVC:如何修改从控制器发送的json响应

我已经使用像这样的控制器构建了一个JSON REST服务:

@Controller

@RequestMapping(value = "/scripts")

public class ScriptController {

@Autowired

private ScriptService scriptService;

@RequestMapping(method = RequestMethod.GET)

@ResponseBody

public List<Script> get() {

return scriptService.getScripts();

}

}

它工作正常,但现在我需要修改所有响应并将“状态”和“消息”字段添加到所有响应中。我已经阅读了一些解决方案:

  1. 从某个特定类的所有控制器方法对象返回,例如RestResponse,它将包含“ status”和“ message”字段(但这不是通用解决方案,因为我将不得不修改所有控制器并以新样式编写新控制器)
  2. 截取具有方面的所有控制器方法(但在这种情况下,我无法更改返回类型)

    如果我想将控制器方法返回的值包装到类的对象中,可以提出一些其他通用且正确的解决方案:

public class RestResponse {

private int status;

private String message;

private Object data;

public RestResponse(int status, String message, Object data) {

this.status = status;

this.message = message;

this.data = data;

}

//getters and setters

}

回答:

如果使用spring 4.1或更高版本,则可以在编写正文之前使用ResponseBodyAdvice定制响应。

以上是 Spring MVC:如何修改从控制器发送的json响应 的全部内容, 来源链接: utcz.com/qa/410729.html

回到顶部