RE: Как создать универсальный каркас для HTTP-метода в 1С?

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

    Универсальный каркас для HTTP-метода в 1С может выглядеть следующим образом. Этот пример демонстрирует, как обрабатывать запросы с использованием методов GET и POST, а также формировать ответ.

    1C
    // Обработчик HTTP-сервиса
    Процедура ОбработатьЗапрос(Запрос, Ответ)
        // Проверяем метод запроса
        Если Запрос.HTTPМетод = "GET" Тогда
            // Обработка GET-запроса
            Артикул = Запрос.ПараметрыURL["artikul"];
            Если Артикул = Неопределено Тогда
                Ответ.УстановитьКодСостояния(400); // Bad Request
                Ответ.УстановитьТелоИзСтроки("Параметр 'artikul' обязателен.");
                Возврат;
            КонецЕсли;
    
            // Логика обработки данных по артикулу
            Результат = ПолучитьДанныеПоАртикулу(Артикул);
            Ответ.УстановитьКодСостояния(200); // OK
            Ответ.УстановитьТелоИзСтроки(Результат);
            
        ИначеЕсли Запрос.HTTPМетод = "POST" Тогда
            // Обработка POST-запроса
            ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
            // Предполагаем, что тело запроса содержит JSON
            Данные = ПрочитатьJSON(ТелоЗапроса);
            
            // Логика обработки данных
            Результат = ОбработатьДанные(Данные);
            Ответ.УстановитьКодСостояния(200); // OK
            Ответ.УстановитьТелоИзСтроки(Результат);
            
        Иначе
            Ответ.УстановитьКодСостояния(405); // Method Not Allowed
            Ответ.УстановитьТелоИзСтроки("Метод не поддерживается.");
        КонецЕсли;
    КонецПроцедуры
    
    // Пример функции для получения данных по артикулу
    Функция ПолучитьДанныеПоАртикулу(Артикул)
        // Здесь должна быть логика получения данных из базы
        Возврат "Данные для артикула: " + Артикул;
    КонецФункции
    
    // Пример функции для обработки данных из POST-запроса
    Функция ОбработатьДанные(Данные)
        // Здесь должна быть логика обработки данных
        Возврат "Данные обработаны: " + Данные;
    КонецФункции
    
    // Пример функции для чтения JSON
    Функция ПрочитатьJSON(Строка)
        // Здесь должна быть логика парсинга JSON
        Возврат Строка; // Возвращаем строку как есть для примера
    КонецФункции
    

    В этом каркасе:
    — Обрабатываются запросы как методом GET, так и методом POST.
    — Для GET-запроса проверяется наличие обязательного параметра.
    — Для POST-запроса предполагается, что тело запроса содержит данные в формате JSON.
    — Формируется ответ с соответствующим кодом состояния и телом ответа.

    Этот каркас можно адаптировать под конкретные задачи и требования вашего проекта.

    База знаний 1С