7 / 7 / 5
Регистрация: 08.01.2013
Сообщений: 570

Spring: RestController и возврат ошибки 400

29.06.2022, 12:19. Показов 532. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго дня!

Есть простецкий контроллер с методом:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @GetMapping
    public DetailDTO detail(@RequestParam Integer orgId,
                            @RequestParam(defaultValue = "-1") Integer pUid,
                            @RequestParam(defaultValue = "-1") Integer bUid,
                            @RequestParam(defaultValue = "-1") Integer fUid) {
        if (pUid != -1) {
            return detailService.inputParcel(orgId, pUid);
        } else if (bUid != -1) {
            return detailService.inputBuildingGzk(orgId, bUid);
        } else if (fUid != -1) {
            return detailService.inputFlat(orgId, fUid);
        }
        .... ????
    }
Так вот в последнем случае когда последние 3 параметра по дефолту равны -1 , но по хорошему нужно вернуть ошибку 400 (Bad request)...

Из того что помню ResponseEntity<DetailDTO> можно отдать такой результат, но для этого придется переделывать и "переосмысливать" многие вещи...

можно ли в уже существующем примере вызвать какой нибудь метод для возврата клиенту ошибки 400 ?

Добавлено через 12 минут
Сделал так...
Но все равно хотелось бы узнать альтернативное решение...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@GetMapping
    public ResponseEntity<DetailDTO> detail(@RequestParam Integer orgId,
                                            @RequestParam(defaultValue = "-1") Integer pUid,
                                            @RequestParam(defaultValue = "-1") Integer bUid,
                                            @RequestParam(defaultValue = "-1") Integer fUid) {
        DetailDTO result;
        if (pUid > 0 && bUid == -1 && fUid == -1) {
            result = detailService.inputParcel(orgId, pUid);
        } else if (pUid == -1 && bUid > 0 && fUid == -1) {
            result = detailService.inputBuildingGzk(orgId, bUid);
        } else if (pUid == -1 && bUid == -1 && fUid > 0) {
            result = detailService.inputFlat(orgId, fUid);
        } else {
            return new ResponseEntity(HttpStatus.BAD_REQUEST);
        }
        return ResponseEntity.ok(result);
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2022, 12:19
Ответы с готовыми решениями:

RestController Spring
Всем доброго времени суток! Я пишу сервер на Spring, который мог бы обслуживать браузеры и android приложения. Я польностью написал...

Spring REST: возврат ошибки пользователю
В интернете много примеров hello world'ов с одним сервисом где всё идеально и всё хорошо, но реальность не столь безоблачна... Как...

RestController для нескольких параметров в Spring
обычно в мануалах описывают как контроллер обрабатывает один параметр: /*---Get user by id---*/ @GetMapping(&quot;/user/{id}&quot;)...

2
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
29.06.2022, 13:58
возможно, spring сумеет замапить Map<String, String> вместо отдельных параметров.
Тогда на эту мапу можно навешивать стандартную валидацию типа @NotEmpty и т.д.
0
226 / 184 / 80
Регистрация: 13.04.2014
Сообщений: 692
30.06.2022, 17:37
Java
1
2
3
4
if (pUid == -1 && bUid == -1 && fUid == -1)
{
    throw new ValidationException();
}
и потом ловишь эту ошибку с помощью @ControllerAdvice

https://www.baeldung.com/excep... lleradvice
https://spring.io/blog/2013/11... spring-mvc
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2022, 17:37
Помогаю со студенческими работами здесь

Spring RestController приём даты в формате ISO с учётом временой зоны
Всем доброго времени суток. Прошу совета, как мне разрешить следующую ситуацию. Имеется RestController, который принимает даты в ISO...

Возврат ошибки
Доброго времени суток. Подскажите пожалуйста какой директивой отключить компилятор и какой функцией вернуть код ошибке возникающий при...

Не отображаются веб-страницы через Еxplorer 8. Код ошибки 400
Уважаемые форумчяне, HELP ME! Я не могу на своем рабочем компьюторе, зайти на веб-страницу, все перепробовал и в голову ни каких идеи не...

Возврат ошибки MySQL
Всех приветствую! Ребята, подскажите, можно ли как-то отключить возврат ошибок MySQL? Например, я хочу подключиться к серверу баз...

Возврат ошибки/сообщения
Подкиньте идею ! Есть два файла, один html-форма, второй - обработчик формы на пчп. Для красоты и удобства, хочу сделать так, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
Микросервис на Python с FastAPI и Docker
ArchitectMsa 23.04.2025
В эпоху облачных вычислений и растущей сложности программных продуктов классическая монолитная архитектура всё чаще уступает место новым подходам. Микросервисная архитектура становится фаворитом. . .
Создаем веб-приложение на Vue.js и Laravel
Reangularity 23.04.2025
Выбор правильного технологического стека определяет успех веб-проекта. Laravel и Vue. js формируют отличную комбинацию для создания современных приложений. Laravel — это PHP-фреймворк с элегантным. . .
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru