В первой части мы создали каркас для Get метода в расширении конфигурации. Во второй части мы поработали с OData и создали обработку, получающую через HTTP-Сервис используя метод Get данные сформированные при помощи СКД. В этой части поговорим про другие методы и БСП:Базовая функциональность\Длительные операции (при отсутствии БСП в Вашей конфигурации необходимо использовать фоновые задания).
В этой статье http-сервис будет в расширении конфигурации БСП 2.4.6.146 на платформе 8.3.10.2650 + IIS, а вот посылать запросы и получать ответы будем в БСП 3.0.1.231 на платформе 8.3.12.1595.
Начнем.
Какие методы можно добавить в HTTP-Сервис?
- GET - Получение данных.
- HEAD - Запрашивает ресурс так же, как и метод GET, но без тела ответа.
- PUT - Изменение данных.
- POST - Создания новой сущности на сервере.
- DELETE - Удаления данных.
- PATCH - Используется для частичного изменения ресурса.
- MERGE - Предназначен для дифференциального изменения данных. Аналогичен методу PATCH, но является расширением от Microsoft.
- OPTIONS - Предназначен для получения информации о способах работы с данным URI (доступные HTTP-методы, форматы представления и т.п.).
- TRACE - Возвращает полученный запрос так, что клиент может увидеть, какую информацию промежуточные серверы добавляют или изменяют в запросе.
- CONNECT - Преобразует соединение запроса в прозрачный TCP/IP-туннель, обычно чтобы содействовать установлению защищённого SSL-соединения через нешифрованный прокси.
- ANY (Любой) - Указывает, что может быть использован любой HTTP-метод из перечисления HTTPМетод.
- И команды для WebDAV(Web Distributed Authoring and Versioning) или просто DAV — набор расширений и дополнений к протоколу HTTP, поддерживающих совместную работу пользователей над редактированием файлов и управление файлами на удаленных веб-серверах. (Еще ссылка по WebDAV)
Давайте обратим внимание на метод «ANY (Любой)» - Данный метод позволяет перехватывать любой метод и обрабатывать его.
В голову пришел небольшой эксперимент благодаря статье Отправка PUT запроса средствами 1С 8.3. Давайте создадим в нашем http-сервисе метод ANY и в цикле используя ВызватьHTTPМетод переберем методы (GET, HEAD, PUT, POST, DELETE, PATCH, MERGE, OPTIONS, TRACE, CONNECT), обращаясь с телом запроса и без. Будем возвращать информацию по запросу.
Для начала создадим Демо базу на основе БСП 2.4.6.146 (на платформе 8.3.10), добавим в нее расширении из предыдущей части, изменим Корневой URL на PAPI и добавим метод "Любой (ANY)".
Обратите внимание на заголовок "Content-Type" (Код обработчика PAPI_ALL). Данный заголовок содержит тип данных и служит для того чтобы можно было понять, что находится в запросе или ответе. Про возможные типы можно почитать тут. мы укажем "text/plain; charset=utf-8" - текстовые данные.
Шаблон у нас будет такой: /{ИмяМетода}
Теперь опубликуем:
Создадим, если ранее не создавали Демо базу на основе БСП 3.0.1.231 (на платформе 8.3.12), и создадим небольшую внешнюю обработку с одной командой ВсеМетоды и реквизитом Результат с типом строка.
Проверяем результат:
Из логов видно, что все запросы кроме запроса с методом TRACE отработали и с телом запроса и без.
Результаты метода ANY:
Как мы видим, часть методов имеет схожее назначение за некоторыми отличиями. Большинство API предоставляют клиентам только методы GET, POST и реже PUT.
Давайте сравним GET и POST:
|
Параметры сравнения |
GET |
POST |
Вступайте в нашу телеграмм-группу
Инфостарт
16500 руб.
02.09.2020
273402
1523
422
24900 руб.
20.08.2024
77087
389
171
14000 руб.
17.04.2026
10190
43
61
SALE! % |