170 похожих чатов

Привет всем, за советом по именованию. Какой лучше отдать exception пользователю,

если он пытается создать запись, которая уже существует по двум полям?

В сервисном слое находим дубликат, бросаем исключение, а вот какое исключение должно быть - вопрос? Можно бросать 403 код и какой-то текст в духе <resource> already exists by field1 and field2, но такое себе

RESTful API only.

Через полгода устроил тотальный рефакторинг крупного проекта, решил поставить под сомнение такую простую вещь

6 ответов

11 просмотров

Кастомные коды сделай

я бы свалил бы это в валидацию. 422 обычный и перечисление полей, которые не уникальны

Эльдарка- Автор вопроса

1 - такая проверка у нас была в сервисе 2 - попробовал сделать в форм реквесте через валидацию, но мне совсем не нравится визуально эта портянка с Rule::unique Думаю, что из сервиса не стоит убирать проверку, потому что могут быть вызову из сидеров, консольных команд и тинкера, а валидация реквеста слишком высоко. Вопрос меняется: можно ли искусственно вызвать ValidationFailed, чтобы он указывал поле errors корректно, без костылей?

Эльдарка
1 - такая проверка у нас была в сервисе 2 - попроб...

я думал речь про контроллер, а не сервис ) контроллер нет смысла вызывать из сидера или тинкера, так что в моём случае правила в реквесте — самое оно, тем более что твой Rule::unique можно обернуть в своё правило аля NeedUniqueField(['name', 'url']), как пример. про ValidationFailed и костыли непонятно, что значит корректно? добавить в валидатор свою ошибку?

Эльдарка- Автор вопроса
Trin Zotoff
я думал речь про контроллер, а не сервис ) контрол...

та не контроллер вызывать же из сидера, а метод create в сервисе. Если перенести проверку в реквест, то логично, что из сервиса её лучше убрать для оптимизации, но тогда сидер или кто-то с тинкера может вызвать метод в сервисе, в котором не будет проверки - случится ошибка метод в сервисе теряет защиту. Я ищу способ оставить защиту в сервисе, но чтобы она бросала правильное исключение, которое даст 422 код

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта