{"id":13758525,"url":"https://github.com/simonkowallik/httpbin","last_synced_at":"2025-06-15T15:35:37.588Z","repository":{"id":64909885,"uuid":"174662618","full_name":"simonkowallik/httpbin","owner":"simonkowallik","description":":twisted_rightwards_arrows: HTTP Request \u0026 Response Service, written in Python + Flask.","archived":false,"fork":false,"pushed_at":"2023-01-07T12:19:45.000Z","size":858,"stargazers_count":6,"open_issues_count":0,"forks_count":9,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-11T07:17:42.455Z","etag":null,"topics":["container","httpbin","request-response"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"postmanlabs/httpbin","license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonkowallik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-09T07:28:37.000Z","updated_at":"2023-06-26T14:44:04.000Z","dependencies_parsed_at":"2023-02-07T03:31:06.223Z","dependency_job_id":null,"html_url":"https://github.com/simonkowallik/httpbin","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/simonkowallik/httpbin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonkowallik%2Fhttpbin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonkowallik%2Fhttpbin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonkowallik%2Fhttpbin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonkowallik%2Fhttpbin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonkowallik","download_url":"https://codeload.github.com/simonkowallik/httpbin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonkowallik%2Fhttpbin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259998175,"owners_count":22943766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["container","httpbin","request-response"],"created_at":"2024-08-03T13:00:31.770Z","updated_at":"2025-06-15T15:35:37.547Z","avatar_url":"https://github.com/simonkowallik.png","language":"Python","funding_links":[],"categories":["Ops tools"],"sub_categories":[],"readme":"# httpbin(1): HTTP Request \u0026 Response Service\n\n[![httpbin Tests](https://github.com/simonkowallik/httpbin/actions/workflows/httpbin-ci.yaml/badge.svg)](https://github.com/simonkowallik/httpbin/actions/workflows/httpbin-ci.yaml)\n[![Container Build](https://github.com/simonkowallik/httpbin/actions/workflows/container-build.yaml/badge.svg)](https://github.com/simonkowallik/httpbin/actions/workflows/container-build.yaml)\n\nThis httpbin fork is updated and tailored to my personal needs.\nAs [postmanlabs / httpbin](https://github.com/postmanlabs/httpbin) is stale and did not see an update in several years I felt the need to maintain my own version.\n\n## Supported docker tags\n\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/simonkowallik/httpbin/latest?label=latest)\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/simonkowallik/httpbin/alpine?label=alpine)\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/simonkowallik/httpbin/nginx?label=nginx)\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/simonkowallik/httpbin/httpd?label=httpd)\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/simonkowallik/httpbin/httpd-alpine?label=httpd-alpine)\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/simonkowallik/httpbin/unit?label=unit)\n\n- **`:latest`** / **`:alpine`** : Plain httpbin with gunicorn on Debian / Alpine Linux.\n\n- **`:nginx`** : Uses [nginx](https://github.com/nginx/nginx) and [uwsgi](https://github.com/unbit/uwsgi) with `nginx:alpine` as the base image.\n\n    \u003e Supports HTTPS and HTTP2. TLS Certificates \u0026 keys are automatically generated but can be overwritten / mapped using docker:\n    \u003e\n    \u003e - `/etc/nginx/ssl/dhparam.pem`\n    \u003e - `/etc/nginx/ssl/eccert.pem` (ecdsa)\n    \u003e - `/etc/nginx/ssl/eckey.pem` (ecdsa)\n    \u003e - `/etc/nginx/ssl/cert.pem` (rsa)\n    \u003e - `/etc/nginx/ssl/key.pem` (rsa)\n    \u003e - `/etc/nginx/ssl/chain.pem`\n    \u003e - `/etc/nginx/nginx.conf`\n    \u003e - `/etc/uwsgi/uwsgi.ini`\n\n- **`:unit`** : Uses [nginx unit](https://github.com/nginx/unit) with base image `alpine`.\n\n    \u003e Supports HTTPS and HTTP2. TLS Certificates \u0026 keys are automatically generated but can be overwritten / mapped using docker:\n    \u003e\n    \u003e - `/var/lib/unit/certs/bundle` (bundle content created by: `cat cert.pem cachain.pem key.pem \u003e bundle`)\n    \u003e - `/var/lib/unit/conf.json`\n\n- **`:httpd`** : Uses [httpd](https://github.com/docker-library/httpd) and [uwsgi](https://github.com/unbit/uwsgi) with `httpd:latest` as the base image.\n\n    \u003e Supports HTTPS. TLS Certificates \u0026 keys are automatically generated but can be overwritten / mapped using docker:\n    \u003e\n    \u003e - `/usr/local/apache2/conf/ssl/dhparam.pem`\n    \u003e - `/usr/local/apache2/conf/ssl/eccert.pem` (ecdsa)\n    \u003e - `/usr/local/apache2/conf/ssl/eckey.pem` (ecdsa)\n    \u003e - `/usr/local/apache2/conf/ssl/cert.pem` (rsa)\n    \u003e - `/usr/local/apache2/conf/ssl/key.pem` (rsa)\n    \u003e - `/usr/local/apache2/conf/ssl/chain.pem`\n    \u003e - `/usr/local/apache2/conf/httpd.conf`\n    \u003e - `/usr/local/apache2/conf/extra/vhosts/*.conf`\n    \u003e - `/etc/uwsgi/uwsgi.ini`\n\n- **`:httpd-alpine`** : Uses [httpd](https://github.com/docker-library/httpd) and [uwsgi](https://github.com/unbit/uwsgi) with `httpd:alpine` as the base image.\n\n    \u003e Supports HTTPS. TLS Certificates \u0026 keys are automatically generated but can be overwritten / mapped using docker:\n    \u003e\n    \u003e - `/usr/local/apache2/conf/ssl/dhparam.pem`\n    \u003e - `/usr/local/apache2/conf/ssl/eccert.pem` (ecdsa)\n    \u003e - `/usr/local/apache2/conf/ssl/eckey.pem` (ecdsa)\n    \u003e - `/usr/local/apache2/conf/ssl/cert.pem` (rsa)\n    \u003e - `/usr/local/apache2/conf/ssl/key.pem` (rsa)\n    \u003e - `/usr/local/apache2/conf/ssl/chain.pem`\n    \u003e - `/usr/local/apache2/conf/httpd.conf`\n    \u003e - `/usr/local/apache2/conf/extra/vhosts/*.conf`\n    \u003e - `/etc/uwsgi/uwsgi.ini`\n\n## Usage\n\nSimple example:\n\n```sh\n    docker run -p 80:80 -p 443:443 simonkowallik/httpbin:nginx\n\n    docker run -p 80:80 -p 443:443 simonkowallik/httpbin:httpd\n\n    docker run -p 80:80 -p 443:443 simonkowallik/httpbin:httpd-alpine\n\n    docker run -p 80:80 -p 443:443 simonkowallik/httpbin:unit\n\n    docker run -p 80:80 simonkowallik/httpbin\n```\n\n## Advanced features\n\n### Return custom HTTP header and value on every response\n\n```shell\n$ docker run -it --rm -p 80:80 -p 443:443 \\\n  -e XHTTPBIN_X_instance_id=\"instance-id-1\" \\\n  ghcr.io/simonkowallik/httpbin:unit\n\n```\n\n```sheel\n$ curl -vsk http://localhost/get\n..\n\u003e GET /get HTTP/1.1\n..\n\u003c HTTP/1.1 200 OK\n..\n\u003c X-Powered-By: httpbin/0.9.2\n\u003c X-instance-id: instance-id-1\n\u003c Server: Unit/1.28.0\n..\n```\n\n### Set custom tags on `/tags` endpoint\n\n```shell\n$ docker run -it --rm -p 80:80 -p 443:443 \\\n  -e HTTPBIN_Instance=1 \\\n  -e HTTPBIN_2ndTag=\"Some Value\" \\\n  ghcr.io/simonkowallik/httpbin:nginx\n\n```\n\n```shell\n$ curl -vsk http://localhost/tags\n\n\u003e GET /tags HTTP/1.1\n\u003e Host: localhost:11080\n\u003e User-Agent: curl/7.74.0\n\u003e Accept: */*\n\u003e\n\u003c HTTP/1.1 200 OK\n\u003c Server: nginx/1.23.3\n\u003c Date: Sat, 17 Dec 2022 14:45:48 GMT\n\u003c Content-Type: application/json\n\u003c Content-Length: 48\n\u003c Connection: keep-alive\n\u003c X-Powered-By: httpbin/0.9.2\n\u003c Access-Control-Allow-Origin: *\n\u003c Access-Control-Allow-Credentials: true\n\u003c\n{\n  \"2ndTag\": \"Some Value\",\n  \"Instance\": \"1\"\n}\n```\n\n## Contributors\n\nThanks to:\n\n- [@v-slenter](https://github.com/v-slenter) for [#9](https://github.com/simonkowallik/httpbin/pull/9)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonkowallik%2Fhttpbin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonkowallik%2Fhttpbin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonkowallik%2Fhttpbin/lists"}