在为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控制器。我建议您使代码尽可能地分离。