首页 > 解决方案 > 弹簧靴。如何在序列化过程之前修改控制器响应

问题描述

我想在序列化过程之前和控制器返回对象之后修改(拦截)响应对象。我有一个 RestController 和一个像这样的 User 类:

public class User {
    public String name;
    public int id;
    public boolean hasErrors;
    public User(Sting name, int id) {
        this.name = name;
        this.id = id;
        this.hasErrors = false;
    }
}

@RestController
public class UserController {
   @GetMapping("/")
   public User getUser() {
       return userService.performMagicAndGetUser();
   }
}

我希望能够修改 UserController::getUser 方法返回的 User 对象,就在它作为 JSON 序列化到 HttpServletResponse 主体之前。所以我想根据“userService.performMagicAndGetUser”方法中发生的事情修改“hasErrors”属性,并存储在某个请求上下文持有者中。我想为返回用户对象的每个端点中的每个请求修改对客户端的最终响应。

标签: springrestspring-bootinterceptor

解决方案


推荐阅读