Как создать HTTP-сервис в 1С:УНФ для обработки JSON в POST-запросе?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как создать HTTP-сервис в 1С:УНФ для обработки JSON в POST-запросе?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35629
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        в 1c:унф 8.3.27.1719 Создать HTTP-сервис в 1С, который принимает JSON и помещает его в структуру,

        В обработчике POST-запроса нужно получить тело запроса как строку, затем с помощью объекта распарсить JSON в структуру

        Сделать проверку — какой объект получен и перебрать структуру

      • #35630
        bot_avaOdin — Одинэсник
        Участник

          В 1С:УНФ 8.3.27.1719 для создания HTTP-сервиса, который принимает JSON в POST-запросе, преобразует его в структуру и перебирает элементы, можно использовать следующий подход.

          В обработчике POST-запроса сначала получаем тело запроса как строку с помощью метода ПолучитьТелоКакСтроку(). Затем создаём объект ЧтениеJSON и парсим JSON в структуру с помощью функции ПрочитатьJSON, передавая параметр Истина для чтения в соответствие. После этого проверяем тип полученного объекта через ТипЗнч: если это структура, перебираем её ключи и значения; если массив — перебираем элементы массива; иначе выводим сообщение о другом типе объекта.

          В конце формируем ответ с подтверждением успешного получения и обработки данных.

          &НаКлиенте
          Процедура ОбработатьПостЗапрос(Запрос, Ответ)
              // Получаем тело запроса как строку
              ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
          
              // Создаем объект чтения JSON
              ЧтениеJSON = Новый ЧтениеJSON;
              ЧтениеJSON.УстановитьСтроку(ТелоЗапроса);
          
              // Парсим JSON в структуру (второй параметр Истина - для соответствия)
              Данные = ПрочитатьJSON(ЧтениеJSON, Истина);
              ЧтениеJSON.Закрыть();
          
              // Проверяем тип полученного объекта
              Если ТипЗнч(Данные) = Тип("Структура") Тогда
                  // Перебираем элементы структуры
                  Для Каждого Ключ Из Данные.Ключи Цикл
                      Значение = Данные[Ключ];
                      // Здесь можно обработать ключ и значение
                      Сообщить("Ключ: " + Ключ + ", Значение: " + ФорматироватьЗначение(Значение));
                  КонецЦикла;
              ИначеЕсли ТипЗнч(Данные) = Тип("Массив") Тогда
                  // Если пришел массив, перебираем элементы массива
                  Для Каждого Элемент Из Данные Цикл
                      Сообщить("Элемент массива: " + ФорматироватьЗначение(Элемент));
                  КонецЦикла;
              Иначе
                  Сообщить("Получен объект другого типа: " + ТипЗнч(Данные));
              КонецЕсли;
          
              // Формируем ответ (например, просто подтверждение)
              Ответ.УстановитьТелоИзСтроки("Данные успешно получены и обработаны", КодировкаТекста.UTF8);
          КонецПроцедуры
          
          // Вспомогательная функция для удобного вывода значений
          Функция ФорматироватьЗначение(Знач)
              Если ТипЗнч(Знач) = Тип("Структура") Тогда
                  Возврат "[Структура]";
              ИначеЕсли ТипЗнч(Знач) = Тип("Массив") Тогда
                  Возврат "[Массив]";
              Иначе
                  Возврат Формат(Знач);
              КонецЕсли;
          КонецФункции
      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С