В общем-то, все получилось. Вам нужно закодировать ваш json в base64 строку с помощью atob/btoa и отправить это дело в запросе. Только не забудьте его опубликовать)
Я использую вот эту библиотеку:
https://github.com/hso-nn/crm-sdk/bl...#7-webresource
Она также паблишит все без вас. В итоге код выглядит очень просто:
import {Webresource} from "crm-sdk";
//кодируем в формат base64
let formattedConfig = btoa(JSON.stringify(config));
//применяем изменения в файл (абстракция)
let webresource = Webresource.get(null, {
name: <имя вебресурса>,
select: ["name", "webresourcetype"]
}).then(function (webresource) {
webresource.content = formattedConfig;
webresource.save().then(function () {
console.log('Saved config file');
});
});
Почти то же самое можно сделать и без библиотек, только потребуется дополнительное действие для публикации.
Также при возникновении каких-либо ошибок при форматировании (например, если у вас в объекте будут спецсимволы или кириллица, хотя она у меня работает нормально), используйте эти рекомендации:
https://itchief.ru/lessons/javascrip...-btoa-and-atob. Также тут есть разъяснения по работе atob/btoa.
Для старых браузеров можно использовать:
new Buffer.from('string').toString('base64')
или
Buffer.from('string').toString('base64')
P.S.
Если Вам нужно, чтобы в конструкторе json был читаемым, используйте Json.stringify вот так:
let pretty = JSON.stringify(obj, null, 2);