Comments 14
Простите, а вот это как вообще?
В силу исторических причин и для обеспечения обратной совместимости у нас не было возможности переключиться на стандартные для NET 6 атрибуты параметров [FromQuery], [FromBody] и т. д.
Что мешало переключиться с дефолтными значениями?
[FromQuery(Name = "q")] string query = ""
Там изначально был написан код, который вытаскивал эти параметры из нескольких источников. То есть условный query мог читаться из строки запроса, но если его там нет, то значение бралось из заголовка с тем же именем. В результате, да, можно было написать [FromQuery] string query="", но потом всё равно пришлось бы делать оставшиеся проверки. А так как параметры в большинстве методов были повторяющимися и читалка уже написана общая, оставили как есть и просто перевели её на новые рельсы. В новых версиях API, понятно, что сразу будем нормально делать.
Век живи, век учись, как говорится. Какое только легаси не встретишь. :) Не-не-не, упаси боже, не ерничаю и не "учу жить"... Просто теперь завис немного и сижу думаю, какой-же сценарий использования того, что если в query не нашли параметр, то ищем в теле... Если там не нашли то ищем в headers... Причем с тем-же именем. Чего только люди не пишут.
Ох... Вспомнил как два года выпиливал ashx из Эльбы %) Вроде их было где-то 300. Брал по 20 за раз и переводил на mvc контроллеры. Иногда приходилось что-то придумывать, потому что встречалась кастомная сериализация, ведь нужно было поддержать обратную совместимость...
Спасибо за статью. У вас небольшое дублирование в первом абзаце раздела "Архитектурные решения при переводе". "Исторической спецификой Фокуса ..." и потом еще раз "Исторической спецификой Фокуса ...".
Использовался ли специальный пакет [System.Web adapters](https://learn.microsoft.com/en-us/aspnet/core/migration/inc/adapters?view=aspnetcore-8.0), который абстрагирует разницу классов HttpContext-производных в NetFramework и .Net6? Или обходились дублированием?
Что мешало переключиться с дефолтными значениями?
[FromQuery(Name = "q")] string query = ""
Подождали бы ещё пару лет и переехали бы сразу на .NET 10))
Ох, спасибо за статью, мне эта ботва ещё предстоит. А там ещё и хвосты от Entity Framework 4 Database First присутствуют...
Миграция API с Framework на .NET6 — скандалы, интриги, расследования и немного выводов