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

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

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

29 ответов

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта