Skip to content

Repository files navigation

httpbin

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

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

Установка

opm install httpbin

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

CLI

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

httpbin run

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

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

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

Тестирование через OneUnit

# 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

# 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.9OneScript 2.0
Windows
Linux
MacOS

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

Класс HttpBin

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

Синтаксис

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

Параметры

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

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

Методы

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

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

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

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

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

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

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

Через API

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

Через CLI

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

Ограничения

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

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

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

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages