Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>Абстрагироваться от хттп это прямо совсем не про REST, а здесь таки REST обсуждается. P>>Здесь мы обсуждаем http POST.
НС>Нет, именно REST.
Смотри прямо заголовок — там POST, т.е. метод http. Если обсуждается именно Рест, то его надо обсуждать в отрыве от какого либо транспортного протокола.
P>>Неинтересно. Все равно протаскивать, проверять итд. Ну вот подломал ктото мидлвару или не подключил — всё, приплыли.
НС>Абалдеть логика. И часто у вас мидлвары подламывают или не подключают?
Похоже, щас ты скажешь, что у вас изобрели способ писать без багов.
> А то, знаешь ли, та же аутентификация и авторизация тоже в виде мидлвар сделаны. Если такое можно подломать — не представляю как вы вообще разработку ведете.
Поломаная аутентификация или авторизация дает знать о себе просто так, даже бывает и тесты запускать не надо.
А вот обеспечение идемпотентности можно и нужно покрывать дешовыми тестами. Все что в мидлварах — это дорогие тесты.
P>>Копипастить и не нужно. НС>Нужно. Как минимум прописать это в модели, а потом из модели достать и куда то засунуть.
Я показал, как это всё прописывать. Вместо атрибута будет параметр. Количество кода примерно одно и то же, только связывание в одном случае неявно, магией, через атрибуты, или явное, через вызов функции.
При этом для разных операций обеспечение идемпотентности может быть тупо разным.
P>> Всё равно ведь придется в метаданных указать, что именно у нас идемпотентное. НС>Для этого достаточно просто атрибут на метод навесить.
Спасибо Кэп, я именно это показал двумя постами назад.
P>>То есть, не совсем ясно, какие бенефиты вытаскивать такое в мидлвару НС>Универсальность и прозрачность. Ты же не таскаешь токен авторизации в модели, правда? Или таскаешь?
Энвелоп у вас еще не изобрели?
P>>И отлаживать проще, и отслеживать, НС>Чем проще?
Можно писать тесты ниже уровнем, дешевые, быстрые.
P>> и смена транспорта не повлечет тотальное переписывание
НС>Смена транспорта RESTful сервиса? Это какие то сказки. Если только на gRPC, но при этом отличия от HTTP будут минимальны.
Именно. Смена транспорта это вобщем норма на большом промежутке времени. Бывает и на grapql переходят, и на grpc, и на что угодно. Проще явно ввести этот энвелоп.
Все что можно вынести в мидлвару — синхронизацию поля в энвелопе со значением хидера для http, на случай если придется это как то учитывать в каком гатевее.