在为Web应用程序设计RESTful API时,有时使用Spring MVC自动对象-JSON转换功能非常方便。要使用此功能,需要定义一个将被序列化的自定义类。

考虑以下代码片段:

@RestController
public class ClientLogin {

    @PostMapping("/auth/password")
    public AuthResponse doPasswordLogin(@RequestParam String username, @RequestParam String password) {
        ...
        return new AuthResponse("test username", "test accessToken", "test sessionToken");
    }

    @PostMapping("/auth/token")
    public AuthResponse doTokenLogin(@RequestParam String username, @RequestParam String token) {
        ...
        return new AuthResponse("test username", "test new accessToken", "test sessionToken");
    }

    @RequiredArgsConstructor
    @Getter
    public static class AuthResponse {
        private final String username;
        private final String accessToken;
        private final String sessionToken;
    }
}


我的问题是,直接在端点类中定义这些“响应”类是一个好主意,还是为此类创建单独的文件更好?请记住,除单元测试外,任何其他端点均未使用AuthResponse对象。

最佳答案

在现实生活中的项目中,您需要将来自业务层的模型映射到表示层模型(在您的情况下为AuthResponse)。此映射应该经过单元测试,并且为了在测试中访问AuthResponse,您需要在通过import <package_name>.ClientLogin.AuthResponse导入的过程中指定ClientLogin控制器。我建议您使代码尽可能地分离。

10-06 10:21