Найти в Дзене
Тарасов

Flutter. Баг о котором никто не знает. Ну почти никто...

Оглавление

Всем привет. Пришло время сказать "А я говорил". Ну да ладно.

В чем суть. Рано или поздно вы сталкиваетесь с ситуацией, когда нужно передавать инфу в заголовке запроса, как минимум авторизация по токену передается в виде "Authorization": "bearer blablabla". Кстати а абсолютно случайно имя с большой буквы написал, но это прям оговорка по фрейду. Но пока что идем дальше. Я всегда думал, что бибилиотека http это базовая библиотека фреймворка для работы с http rest запросами.

Как же я ошибался...

На самом деле это обертка, такая же как и dio. И когда мне необходимо было запихнуть в хедеры локаль вида "Locale": "en". Я удивился, а почему не работает ? Наверно если я делал апи я бы сразу заметил, что хедеры прилетают с маленькой буквой, поменял бы на беке и вопрос был бы закрыт. Но апи не мое, а просить что то менять как то не удобно. И я начал копать и нашел это

-2

То есть в библиотеке перед отправкой у каждого заголовка проставляется .toLowerCase(). Я не знаю зачем так и мне интересно зачем так, какой сакральный смысл в этой манипуляции.... В общем не долго думаю я перехожу на dio. На еще более хитрую библиотеку, которая по сути не библиотека а полноценный фреймворк по работе с запросами.

Окей. Перешел.

Но вот не задача.

-3

Как говорится - списывай, но не слово в слово.

Спустя пару дней часов минут

Я нашел. Базовую библиотеку

-4

HttpClient в пространстве самого dart. Самое забавное, что и там также сделано. Мы умнее всех - заголовки должны быть с маленькой буквой. Нет. Но после пары десятков иштысов* они добавили возможность добавлять заголовки в первостепенном виде.

-5

Надо было свойство назвать blessAndPreserveHeaderCase. А то мало ли...

Окей всем спасибо. На самом то деле судя по охвату проблемы - проблемы то и нет. Так что скоро фреймворки будут решать за вас, как вам называть ваши классы и тд.

Сейчас библиотеки пишутся на каждый вообще чих. Разработчик не думает, как реализовать ту или иную задачу он сначала гуглит либу, а потом решает задачу в рамках этой либо. Это конечно удобно. Зачем писать код, если его уже кто то написал. Но вот не задача, пишет код такой же разработчик, как и ты может немного опытнее. Но чем больше опыта тем больше цена ошибки и эту цену придется платить не ему, а тебе.

* это типо кек Issue читается как иш ю и если ю перевести получается иш ты