Можно ли объявлять DTO-ответы Spring MVC как статические вложенные классы? - PullRequest
0 голосов
/ 28 ноября 2018

Иногда очень удобно использовать функцию автоматического преобразования объекта в JSON Spring MVC при разработке RESTful API для вашего веб-приложения.Чтобы эта функция работала, нужно определить пользовательский класс, который будет сериализован.

Рассмотрим этот фрагмент кода:

@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 не используется какой-либо другой конечной точкой, кроме модульных тестов.

1 Ответ

0 голосов
/ 28 ноября 2018

В реальных проектах вам необходимо отобразить модели, поступающие из бизнес-уровня, в модели уровня представления (в вашем случае это AuthResponse).Это отображение должно быть проверено модулем, и для доступа к AuthResponse в вашем тесте вам нужно будет указать контроллер ClientLogin в импорте через import <package_name>.ClientLogin.AuthResponse.Я бы порекомендовал сохранить ваш код максимально отделенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...