httpbin - это python-сервер, который возвращает стандартные ответы на запросы клиента.
Часто требуется проверить тот или иной функционал вашего сетевого приложения. httpbin может пригодиться для тестирования корректной работы HTTP-клиента со стандартными ответами HTTP-сервера.
Ссылка на сервис, развёрнутый в интернете: http://httpbin.org/
Ссылка на скачивание дистрибутива: https://github.com/kennethreitz/httpbin
Ссылка на страничку автора: http://kennethreitz.com/announcing-httpbinorg.html
Для установки требуется python 2.7. Находясь в директории с распакованным httpbin наберите:
python setup.py install
Возможно, вам придется установить библиотеку pip или distribute (easy_install). Библиотеки под Windows можно скачать тут: http://www.lfd.uci.edu/~gohlke/pythonlibs/
httpbin использует микрофреймворк для создания web-приложений Flask, который также требуется установить.
После установки httpbin и Flask для запуска тестов самодиагностики наберите в консоли:
python.exe test_httpbin.py
Если возникнет ошибка, то будут отображены другие библиотеки python, которые нужно установить отдельно, например, используя easy_install. Список требуемых библиотек находится в каталоге httpbin в файле requirements.txt. После полной установки httpbin и всех зависимостей, тест самодиагностики пройдёт:
Для отображения возможных опций работы httpbin наберите в консоли:
python.exe manage.py
Выйдет список опций:
Для запуска сервиса httpbin наберите в консоли:
python.exe manage.py runserver
После успешного запуска можно будет обратиться к сервису по локальному адресу: http://127.0.0.1:5000/
Сама страничка сервиса представляет собой набор ссылок с примерами запросов:
Основные библиотеки httpbin:
- httpbin/core.py - ядро программы с основными реализованными функциями httpbin, доступные с главной странички сервиса. Шаблоны для сервиса находятся в каталоге httpbin/templates.
- httpbin/helpers.py - вспомогательные функции для обработки клиентских-запросов.
- httpbin/filters.py - используемые декораторы функций.
- httpbin/runner.py - command-line runner.
Наиболее интересные возможности:
- Получение любого значения поля Status Code в области Headers. Для этого достаточно обратиться по ссылке вида http://127.0.0.1:5000/status/NUMBER, где NUMBER - произвольное числовое значение, которое нужно получить в качестве статус-кода в ответ на запрос клиента.
- Получение произвольных Headers в ответ, передав их параметром в запросе вида http://127.0.0.1:5000/response-headers?HEADERS, где HEADERS - заголовки, которые нужно получить в ответ. Например, вместо HEADERS можно подставить строку: Content-Type=text/plain;%20charset=UTF-8&Server=httpbin
- Получение в ответ произвольных cookie, указав ключи и их значения параметром в запросе вида http://127.0.0.1:5000/cookies/set?COOKIE, где COOKIE - ключи и значения, которые нужно получить в ответ. Например, вместо COOKIE можно подставить строку: k1=v1&k2=v2
- Возможно обратиться к страничкам, защищенным HTTP Basic Auth и HTTP Digest Auth. По умолчанию, логин user, пароль passwd.
- Имитация работы медленного сервера, от которого приходит ответ через указанное время задержки. Для этого нужно обратиться по ссылке вида http://127.0.0.1:5000/delay/DELAY, где DELAY - время задержки ответа в секундах.
- Возможно получить ответ после указанного числа локальных редиректов. Для этого нужно обратиться по ссылке вида http://127.0.0.1:5000/relative-redirect/NUM, где NUM - требуемое количество редиректов.
- Работа с файлом robots.txt. Получить настройки доступа по умолчанию можно обратившись по ссылке http://127.0.0.1:5000/robots.txt, а проверить, что нет доступа к заблокированному правилами robots.txt объекту можно по ссылке http://127.0.0.1:5000/deny.
- Отображение произвольной HTML-странички в ответ на запрос по ссылке http://127.0.0.1:5000/html. Содержимое странички по умолчанию: httpbin/templates/moby.html. Её содержимое можно заменить на своё, либо указать другую страничку в функции view_html_page(), находящейся в библиотеке httpbin/core.py.
- Получение в ответ потока с указанным числом JSON-сообщений. Для этого нужно обратиться по ссылке вида http://127.0.0.1:5000/stream/LINES, где LINES - требуемое количество сообщений. По умолчанию, максимальное число сообщений ограничено 100. Его можно изменить в библиотеке httpbin/core.py, отредактировав функцию stream_n_messages(n).
- Формирование GET, POST, PUT, DELETE запросов при переходе по соответствующим ссылкам.
- Возможно сформировать запрос со значением поля Accept-Encoding: gzip,deflate,sdch в области Headers и получить в ответ gzip-encoded данные.
- Получение значения поля User-Agent, передаваемого клиентом. Для этого достаточно обратиться по ссылке вида http://127.0.0.1:5000/user-agent.