Closed bapho-bush closed 10 months ago
Обратно не совместимое изменение. Это плохо для всех кто уже использует.
Мне впринципе не нравится идея когда функция Post берет на себя слишком много. Я считаю она не должна заниматься сериализацией в Json данных тела, но она может этим заниматься если мы указали нужный заголовок в параметрах и передали данные как структуру или массив или соответствие.
В целом мне явный синтаксис когда сериализация происходит наглядно нарвится больше.
Ответ = КоннекторHTTP.Post("http://ya.ru", КоннекторHTTP.ОбъектВJson(Пакет));
Обратно не совместимое изменение. Это плохо для всех кто уже использует.
Да, и мне это тоже не нравится. Но лаконичные варианты, не ломающие обратную совместимость, я найти не смог. Может есть какие-то предложения, кроме альтернативного API с явной сериализацией?
В целом мне явный синтаксис когда сериализация происходит наглядно нарвится больше.
Как я вижу по коду, уже есть устоявшееся решение, что методы Post/Get/etc берут на себя ответственность по сериализации, но делают это по каким-то не понятным мне правилам. Явное указание того, что попадёт в тело запроса, имхо, тоже вполне себе вариант. Добавить в конец методов необязательный параметр Тело
, и проверять заполнен ли он. Заполнен? Вставляем "как есть" в запрос. Нет? Пляшем по существующей логике.
Структура в Тело может быть сериализована как Json, как параметры формы, как xml, и еще хрен знает как. Под каждый вариант делать отдельные параметры не хочется.
В Python Requests это обыграно именными параметрами, но в 1С такого нет. Потому отсчитывать запятые - не самое элегантное решение.
Потому я считаю лучше когда метод Post ничего не сериализует либо делает это по алгоритму данных формы. Если же что-то в тело положили, то метод берёт на себя работу попытки вычислить хеадеры типа контента. А всю Сериализацию отдавать на откуп разработчика чтобы он ее вызывал явно
В целом мне явный синтаксис когда сериализация происходит наглядно нарвится больше.
Ответ = КоннекторHTTP.Post("http://ya.ru", КоннекторHTTP.ОбъектВJson(Пакет));
В версии 2.4.8 в таком случае ещё требуется явное указание заголовка
Content-Type
равноеapplication/json
. Иначе подставитсяapplication/x-www-form-urlencoded
Правильно ли я понимаю, что в версии 2.3.1 единственная возможность вызвать метод
Post
и отправить в теле запроса JSON - указать явно значение свойстваJson
в структуре дополнительных параметров. То есть:Хотелось бы иметь возможность указывать JSON без взаимодействия со структурой доп. параметров. На мой взгляд, явное указание свойства
Json
- неправильно потому что, судя по коду, есть специальный метод, заполняющий параметр JSON, исходя из входных параметров. Явное указание свойства выглядит как вмешательство в приватное API.Один из возможных вариантов решения - в сигнатуру метода
Post
и добавить возможность передавать коллекцию для сериализации в JSON, далее этот параметр передавать вЗаполнитьДополнительныеПараметры
.Например: