Skip to content

oscript-library/httpbin

 
 

Repository files navigation

httpbin

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

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

Установка

opm install httpbin

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

CLI приложение

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

httpbin run

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

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

Тестирование с asserts и 1connector

# 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, а также возможность отправки запросов и получения ответов.

Совместимость

Сервис протестирован и поддерживается на следующих платформах и версиях OneScript:

ОС OneScript 1.9 OneScript 2.0
Windows
Linux
MacOS

Программный интерфейс

Класс HttpBin

Класс предназначен для управления локальным HTTP-сервисом. Реализован с использованием текучего интерфейса.

Синтаксис

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

Параметры

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

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

Методы

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

Пользовательские эндпоинты

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

Создание контроллера

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

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

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

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

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

Через программный интерфейс

Для подключения кастомных контроллеров используйте метод УстановитьРасположениеКонтроллеров(), указав путь к файлу или каталогу с контроллерами:

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

Через CLI

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

Ограничения

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

Сравнение с httpbin.org

Эндпоинт 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

About

Cервис для тестирования и отладки HTTP-запросов

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • 1C Enterprise 96.2%
  • HTML 3.6%
  • CSS 0.2%