ОбъектМетаданных: МетодHTTPСервиса

Типы · MetadataObject: HttpServiceMethod

Используется для обращения к метаданным объекта конфигурации - метод HTTP- сервиса.

Полное описание, параметры и ограничения

ОбъектМетаданных: МетодHTTPСервиса (MetadataObject: HttpServiceMethod)

ОбъектМетаданных: МетодHTTPСервиса (MetadataObject: HttpServiceMethod)

Доступен, начиная с версии 8.3.5.

Свойства:
HTTPМетод (HTTPMethod)
Обработчик (Handler)

Описание:

Используется для обращения к метаданным объекта конфигурации - метод HTTP- сервиса.

Доступность:

Толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.3.5.

Методическая информация

Практические примеры

Найти обработчики GET и POST одного пути

Одинаковый URL имеет два разных метода и две разные функции сервиса. Имя метода метаданных и тип HTTPМетод проверяются отдельно.

Где и как запускать

Полный серверный модуль учебной копии КА2 Progress 2.5.20.75; без HTTP, публикации и печати.

Подготовка

  1. Изолированная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Создайте серверный общий модуль УчебныеМаршрутыИМакеты.

  2. Вставьте полный модуль одного урока и вызовите УчебныеМаршрутыИМакеты.ВыполнитьПример() своей серверной учебной командой.

  3. Источники: HTTPServices\ПередачаДанных.xml и ПередачаДанных\Ext\Module.bsl; Documents\РеализацияТоваровУслуг\Templates\ПФ_MXL_РеализацияТоваров.xml.

  4. Метаданные только читаются. HTTP-запросы, публикация сервиса, загрузка/удаление файлов хранилища и печать документов не выполняются.

  5. Формируемый путь с guide-owned-storage — учебная строка, не действующий адрес публикации. GET/POST обработчики могут выполнять прикладную работу и здесь не вызываются.

  6. Макет печати получается в память без создания документа реализации и без заполнения его данными. Чтение размера макета не доказывает корректность настоящей печатной формы.

Процедура ВыполнитьПример() Экспорт
    Сервис = Метаданные.HTTPСервисы.Найти("ПередачаДанных");
    Если Сервис = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого HTTP-сервиса ПередачаДанных";
    КонецЕсли;
    Шаблон = Сервис.ШаблоныURL.Найти("ХранилищеИИдентификатор");
    Если Шаблон = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого шаблона ХранилищеИИдентификатор";
    КонецЕсли;
    GETМетод = Шаблон.Методы.Найти("GET");
    POSTМетод = Шаблон.Методы.Найти("POST");
    Если GETМетод = Неопределено ИЛИ POSTМетод = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённых GET/POST методов";
    КонецЕсли;
    Сообщить(GETМетод.HTTPМетод = Метаданные.СвойстваОбъектов.HTTPМетод.GET);
    Сообщить(POSTМетод.HTTPМетод = Метаданные.СвойстваОбъектов.HTTPМетод.POST);
    Сообщить(GETМетод.Обработчик = "ХранилищеИИдентификаторGETЗапрос");
    Сообщить(POSTМетод.Обработчик = "ХранилищеИИдентификаторPOSTЗапрос");
    Сообщить(Сервис.Модуль = Неопределено);
    Сообщить("Посмотрите исходный модуль HTTPServices/ПередачаДанных/Ext/Module.bsl. Обработчики здесь НЕ вызываются.");
    Сообщить(Шаблон.Синоним);
    Сообщить(Шаблон.Комментарий);
    Сообщить(Шаблон.ПолноеИмя());
    Сообщить(Шаблон.Представление());
    Сообщить(Шаблон.ПринадлежностьОбъекта);
    Сообщить(ТипЗнч(Шаблон.ОбъектРасширяемойКонфигурации));
    Сообщить(Шаблон.ЕстьИзмененияРасширениямиКонфигурации());
    Сообщить(ТипЗнч(Шаблон.РасширениеКонфигурации()));
    Сообщить(Шаблон.Родитель() = Сервис);

КонецПроцедуры

Разбор по шагам

  1. Внутри Шаблон.Методы найти GET и POST по именам.

  2. Сравнить их HTTPМетод с реальным перечислением, а Обработчик — с исходными строками.

  3. Открыть исходный Module.bsl вручную: обе функции принимают Запрос. Это входящий HTTPСервисЗапрос, не объект SQL Запрос.

  4. Не вызывать функции и не отправлять GET/POST. Урок заканчивается чтением метаданных маршрута.

Как проверить результат

  1. Шесть фиксированных проверок дают Истина, остальное диагностическое.

  2. В Module.bsl находятся ХранилищеИИдентификаторGETЗапрос(Запрос) и POSTЗапрос(Запрос). Экспорт по этому примеру не требуется и не добавляется.

Ожидаемый результат

Полный образец поиска точки обработки HTTP без исполнения прикладного кода.

На что обратить внимание

  1. Даже GET может иметь прикладные побочные эффекты: чтение метаданных не является разрешением его вызывать.

  2. В модуле HTTP-сервиса обработчик не обязательно объявлен Экспорт.

  3. Проверка имён не доказывает правильность авторизации или поведения обработчика.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Составить карту HTTP-сервиса из метаданных

Для каждого сервиса показываем корневой URL, шаблоны, HTTP-методы и имена обработчиков. Сетевые запросы не отправляем.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.


Для Каждого Сервис Из Метаданные.HTTPСервисы Цикл
    Сообщить(СтрШаблон("Сервис %1 (%2); корень %3", Сервис.Имя, Сервис.Синоним, Сервис.КорневойURL));
    Сообщить(Сервис.Комментарий);
    Сообщить(СтрШаблон("Повторное использование %1; время жизни %2",
        Сервис.ПовторноеИспользованиеСеансов, Сервис.ВремяЖизниСеанса));
    Сообщить(Сервис.Модуль = Неопределено);
    Для Каждого Маршрут Из Сервис.ШаблоныURL Цикл
        Сообщить(СтрШаблон("Шаблон %1 (%2): %3", Маршрут.Имя, Маршрут.Синоним, Маршрут.Шаблон));
        Сообщить(Маршрут.Комментарий);
        Для Каждого Метод Из Маршрут.Методы Цикл
            Сообщить(СтрШаблон("  %1 → %2", Метод.HTTPМетод, Метод.Обработчик));
        КонецЦикла;
    КонецЦикла;
КонецЦикла;

Разбор по шагам

  1. КорневойURL относится к пути сервиса внутри публикации. Не добавляем домен, порт и имя публикации наугад.

  2. ШаблонURL сопоставляется с методом запроса. Одинаковый путь с GET и POST может иметь разные обработчики.

  3. Обработчик — строка имени процедуры. Свойство Модуль в доступном API равно Неопределено и не раскрывает исходный текст.

  4. Параметры повторного использования сеанса читаем для последующего исследования, ничего не переключаем.

Как проверить результат

  1. В Конфигураторе HTTP-сервисы → выбранный сервис → Шаблоны URL найдите совпадающие имена, шаблоны и методы.

  2. Если публикации нет, пример всё равно может вывести определения: это не ошибка и не доказательство доступности URL.

  3. В примере нет HTTPСоединения: внешние системы не получают запросов.

Ожидаемый результат

Получена карта маршрутов и обработчиков для анализа серверного кода интеграции.

На что обратить внимание

  1. Метаданные не показывают настройки веб-сервера, TLS, аутентификацию и фактические коды ответа.

  2. Не считайте путь из метаданных рабочей ссылкой без проверки конкретной публикации.

  3. Наличие метода DELETE не даёт разрешения проверять удаление на рабочем сервере.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.