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

Парни, что лучше всего передовать в аргумент метода. На первом

скрине метод MessageService, который обновляет текст у сообщения, в него я передаю айди создателя и контракт, который приходит в реквесте у контроллера. но что если передавать как аргумент тип Message, а проверку на принадлежность сообщения к какому либо ownerId вынести в контроллер, возможно тогда метод UpdateMessage будет более универсальным?

29 ответов

23 просмотра
21th- Автор вопроса

в контроллер можно вынести таким образом - сделать метод в сервисе ValidateOwnerMessage, который будет проверять принадлежит ли сообщение такому то айдишнику и будет возвращать сообщение => затем это сообщение прокидывать в аргумент метода UpdateMessage. Что думаете?

21th
в контроллер можно вынести таким образом - сделать...

Если так сделать, то это позволит контроллеру не делать авторизацию вообще, просто "забыв" вызвать метод Validate. Можно было бы как раз наоборот сделать - внести сервис авторизации как зависимость в сервис обновления. Тогда ownerId вообще уйдет из api сервиса обновления.

21th- Автор вопроса
George Polevoy
Если так сделать, то это позволит контроллеру не д...

вот так бы это выглядело примерно с методом Validate

21th- Автор вопроса
George Polevoy
Если так сделать, то это позволит контроллеру не д...

я честно не особо понял, то что ты написал

21th
screenshot вот так бы это выглядело примерно с методом Valida...

Хороший способ. Единственное - имнование метода ValidateOwnerPostAsync немного сбивает с толку. И теперь Unauthorized не отличить от NotFound.

21th- Автор вопроса
George Polevoy
Хороший способ. Единственное - имнование метода Va...

ну то есть думаешь, что лучше сделать как на скринах, в метод сервиса передавать тип Message, на скринах в данном случае Post

21th- Автор вопроса
George Polevoy
Хороший способ. Единственное - имнование метода Va...

ну проблема с тем что возвращать уже решена в новом проекте, я думаю там всегда 403

21th- Автор вопроса
21th
что он делает вкратце?

позволяет убрать валидацию моделей в отдельные классы-валидаторы и путем несложного кода интегрировать валидацию прямо в pipeline вызова. Тоесть ты пишешь public IActionResult MyAction([FromBody] MyModel m) { .... } и когда у тебя начинает выполняца action - ты можешь быть уверен что валидация прошла и модель валидна.

21th
ну то есть думаешь, что лучше сделать как на скрин...

Нет, передавать тип Post не лучше, потому что для удаления передается много лишнего, и требуется чтение целого объекта из базы, и аллокация целого объекта в памяти.

21th- Автор вопроса
Denisio 🇬🇪
позволяет убрать валидацию моделей в отдельные кла...

но ведь если расставить такие атрибуты и повесить на контроллер ApiController, то он автоматически будет валидировать и вернет 400, если валидацию модель не прошла

21th
screenshot но ведь если расставить такие атрибуты и повесить ...

да но посомтри на скриншот -у тебя там значительно более пушистая валидация а не только Required

21th- Автор вопроса
21th- Автор вопроса
George Polevoy
Нет, передавать тип Post не лучше, потому что для ...

ну например в текущем проекте я для удаления передают id сообщения, но тут загвостка в том, что нужно делать 2 запроса - 1. Запрос сообщения чтобы проверить на пренадлежность его к какому либо айди 2. Запрос сообщения для удаления

21th
ну например в текущем проекте я для удаления перед...

Так если чтение можно сделать с условием, то и удаление можно сделать с условием. Или уперлись в ограничение EntityFramework?

21th- Автор вопроса
Denisio 🇬🇪
screenshot я вот про это

про конвертацию в гуид - в новом проекте это вовсе убрано про валидацию - имеется в виду валидирование принадлежности поста к айди юзера

21th
каким условием

В SQL есть только SELECT …. WHERE …, но и DELETE …. WHERE …. Раз вы делаете SELECT * from posts where MessageId = @messageId AND OwnerId = @ownerId То сможете сделать и DELETE from posts where MessageId = @messageId AND OwnerId = @ownerId

21th
ну например в текущем проекте я для удаления перед...

И к тому же, почему вас так волнует, что это делается в 2 запроса к базе? Сколько постов публикуются, и сколько удаляются?

21th
не оптимизировано

Почему это нужно оптимизировать? Это создает существенную нагрузку?

21th- Автор вопроса
George Polevoy
Почему это нужно оптимизировать? Это создает сущес...

не знаю, ну вот например одновремено удалят сообщение 10к людей, надо сделать 20к запросов, вместо 10к

21th
не знаю, ну вот например одновремено удалят сообще...

Что это за юзкейс? Вообще о чем речь идет, что за сообщения? Вот например, в этом чате сообщения удаляют раз в три дня, наверное, а тут тысячи сообщений в день. Если это массовая обработка, то действительно, нужен совсем другой метод удаления.

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта