OpenHub
OpenHub
Войти

httpbinпакет

с апстрима
автор: Dmitry Ivanovскачиваний: 0

Пакет лежит в основном пуле хаба: короткой формы достаточно, если хаб прописан сервером пакетов в opm.cfg.

opm install httpbin

Установка на opm младше 1.7.0

Легаси-флоу. Клиент младше 1.7.0 адрес пула в аргументе не разбирает: пул сначала прописывают сервером пакетов, и только потом ставят через него. На 1.7.0 и новее этот раздел не нужен — хватает команды из шапки страницы.

Добавьте пул сервером пакетов в opm.cfg. Порт продублирован в «Сервер»: у opm push поле «Порт» не читается.

{ "СервераПакетов": [ { "Имя": "default", "Сервер": "https://hub.1cdevelopers.ru", "Порт": 443, "ПутьНаСервере": "/api/v1/pools/default/download/", "РесурсПубликацииПакетов": "/api/v1/pools/default/push", "Приоритет": 1 } ] }

И ставьте пакет, указывая сервер:

opm install -m default httpbin

Описание

httpbin

Release Тестирование Статус порога качества

Локальный сервис для тестирования и отладки HTTP-запросов, реализованный на OneScript с использованием фреймворка WINOW. Проект предоставляет функциональность, аналогичную httpbin.org, поддерживая большинство оригинальных эндпоинтов.

Установка <a name="installation"></a>

opm install httpbin

Использование <a name="usage"></a>

CLI <a name="cli"></a>

Запустите сервис с помощью команды:

httpbin run

После запуска сервис будет доступен по адресу: http://127.0.0.1:3333

Опции команды:

Опция Описание Значение по умолчанию
-h, --host Имя хоста или IP-адрес сервиса 127.0.0.1
-p, --port TCP-порт сервиса 3333
-r, --routes, --routes-handlers Путь к файлу или каталогу с пользовательскими контроллерами

Тестирование через OneUnit <a name="testing-oneunit"></a>

# test.os

#Использовать asserts
#Использовать 1connector
#Использовать httpbin

Перем HttpBin;

&ТестовыйНабор(Характер = "Одиночка")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ПередВсеми
Процедура ПередЗапускомТестов() Экспорт
    HttpBin = Новый HttpBin();
    HttpBin.Запустить();
КонецПроцедуры

&ПослеВсех
Процедура ПослеЗапускаТестов() Экспорт
    HttpBin.Остановить();
КонецПроцедуры

&Тест
Процедура ТестДолжен_ПроверитьПараметрыЗапроса() Экспорт

    ПараметрыЗапроса = Новый Структура();
    ПараметрыЗапроса.Вставить("key", "value");

    Ответ = КоннекторHTTP.Get(HttpBin.URL("/get"), ПараметрыЗапроса);

    Ожидаем.Что(Ответ.КодСостояния).Равно(200);
    Ожидаем.Что(Ответ.Заголовки["Content-Type"]).Содержит("application/json");
    Ожидаем.Что(Ответ.Json()["args"]["key"]).Равно("value");

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

Тестирование через 1testrunner <a name="testing-1testrunner"></a>

# test.os

#Использовать asserts
#Использовать 1connector
#Использовать httpbin

Перем HttpBin;

&Инициализация
Процедура ПередЗапускомТестов() Экспорт
    HttpBin = Новый HttpBin();
    HttpBin.Запустить();
КонецПроцедуры

&Завершение
Процедура ПослеЗапускаТестов() Экспорт
    HttpBin.Остановить();
КонецПроцедуры

&Тест
Процедура ТестДолжен_ПроверитьПараметрыЗапроса() Экспорт

    ПараметрыЗапроса = Новый Структура();
    ПараметрыЗапроса.Вставить("key", "value");

    Ответ = КоннекторHTTP.Get(HttpBin.URL("/get"), ПараметрыЗапроса);

    Ожидаем.Что(Ответ.КодСостояния).Равно(200);
    Ожидаем.Что(Ответ.Заголовки["Content-Type"]).Содержит("application/json");
    Ожидаем.Что(Ответ.Json()["args"]["key"]).Равно("value");

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

Swagger UI

На стартовой странице сервиса (по умолчанию: http://127.0.0.1:3333) доступна интерактивная документация API через Swagger UI, а также возможность отправки запросов и получения ответов.

Совместимость <a name="compatibility"></a>

Поддерживаемые платформы и версии OneScript::

ОС OneScript 1.9 OneScript 2.0
Windows
Linux
MacOS

Программный интерфейс <a name="api"></a>

Класс HttpBin

Класс предназначен для управления жизненным циклом локального HTTP-сервиса. Поддерживает текучий интерфейс (fluent API).

Синтаксис

Новый HttpBin(<Хост>, <Порт>)

Параметры

<ins><Хост> (необязательный)</ins></br> Тип: Строка.</br> IP-адрес или имя хоста.</br> По умолчанию: 127.0.0.1

<ins><Порт> (необязательный)</ins></br> Тип: Число.</br> Номер TCP-порта.</br> По умолчанию: 3333

Методы

Метод Описание
Запустить() Запускает сервис в синхронном режиме с ожиданием полной готовности.
ЗапуститьАсинх() Запускает сервис в асинхронном режиме без ожидания готовности.
Остановить() Останавливает сервис.
ОжидатьЗавершения() Ожидает завершения работы сервиса, приостанавливая выполнение текущего потока.
Отвечает() Проверяет доступность сервиса через HTTP-запрос.
Активен() Проверяет, что процесс сервиса запущен и не завершен.
Порт() Возвращает номер TCP-порта, на котором работает сервис.
УстановитьПорт(<Порт>) Устанавливает TCP-порт для запуска сервиса.
Хост() Возвращает имя хоста или IP-адрес сервиса.
УстановитьХост(<Хост>) Устанавливает имя хоста или IP-адрес для запуска сервиса.
URL(<АдресРесурса>) Формирует полный URL-адрес сервиса с опциональным путем к ресурсу.
ТаймаутЗапуска() Возвращает текущее значение таймаута запуска сервиса.
УстановитьТаймаутЗапуска(<Таймаут>) Устанавливает максимальное время ожидания запуска сервиса. Применяется при синхронном запуске.
РасположениеКонтроллеров() Возвращает текущий путь к файлу или каталогу с кастомными контроллерами.
УстановитьРасположениеКонтроллеров(<Расположение>) Устанавливает путь к файлу или каталогу с кастомными контроллерами, определяющими точки маршрута сервиса.

Пользовательские эндпоинты <a name="custom-endpoints"></a>

Сервис поддерживает подключение пользовательских контроллеров.

Контроллер - это класс OneScript с аннотацией &Контроллер. В классе определяются точки маршрута (эндпоинты) аннотацией &ТочкаМаршрута. Подробнее см. в документации WINOW.

Пример контроллера

&Контроллер("/order")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ТочкаМаршрута("add")
Процедура Главная(Ответ) Экспорт
    // Бизнес-логика
КонецПроцедуры

Подключение контроллеров

Через API

HttpBin = Новый HttpBin()
    .УстановитьРасположениеКонтроллеров("./path/to/routes")
    .Запустить();

Через CLI

httpbin run --routes './path/to/routes'

Ограничения <a name="limitations"></a>

  • Отсутствие поддержки HTTPS: Сервис работает только по протоколу HTTP.

Сравнение с httpbin.org <a name="comparison"></a>

Эндпоинт oscript-httpbin httpbin.org
/ip
/uuid
/uuid/:n
/user-agent
/headers
/get
/post
/put
/patch
/delete
/anything
/anything/:anything
/base64/:value
/encoding/utf8
/gzip
/deflate
/brotli
/zstd
/status/:code
/response-headers?key=val
/redirect/:n
/redirect-to?url=foo
/redirect-to?url=foo&status_code=307
/relative-redirect/:n
/absolute-redirect/:n
/cookies
/cookies/set?name=value
/cookies/set/:name/:value
/cookies/delete?name
/basic-auth/:user/:passwd
/hidden-basic-auth/:user/:passwd
/digest-auth/:qop/:user/:passwd/:algorithm
/digest-auth/:qop/:user/:passwd
/bearer
/stream/:n
/delay/:n
/drip?numbytes=n&duration=s&delay=s&code=code
/range/:n?duration=s&chunk_size=code
/html
/robots.txt
/deny
/cache
/cache/:n
/etag/:etag
/bytes/:n
/stream-bytes/:n
/links/:n
/links/:n/:offset
/image
/image/png
/image/jpeg
/image/webp
/image/svg
/forms/post
/xml
/json