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

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

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

29 ответов

7 просмотров
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
не знаю, ну вот например одновремено удалят сообще...

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

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Всем привет, после Си стоит учить плюсы или лучше на раст перейти?
Linus
8
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
значить например он учился в СДУ то получается он особенный?)
Asets Serikov
11
Карта сайта