著名的 httpbin.org HTTP 请求与响应测试服务的 Golang 版本。
/ 本页面。/absolute-redirect/:n 302 绝对重定向 n 次。/anything/:anything 返回传递给请求的任何内容。/anything/status/:code 🆕 返回传递给请求的任何内容,使用自定义状态码。/base64/:value?content-type=ct 解码Base64编码的字符串,可选Content-Type。/base64/decode/:value?content-type=ct 显式解码Base64编码字符串的URL。/base64/encode/:value 将字符串编码为URL安全的Base64。/basic-auth/:user/:password 挑战HTTP基本认证。/bearer 检查Bearer令牌头 - 如果未设置则返回401。/brotli 返回brotli编码的数据。 未实现!/bytes/:n 生成 n 个随机二进制数据字节,接受可选的 seed 整数参数。/cache 返回200,除非提供If-Modified-Since或If-None-Match头,则返回304。/cache/:n 设置Cache-Control头为 n 秒。/cookies 返回cookie数据。/cookies/delete?name 删除一个或多个简单cookie。/cookies/set?name=value 设置一个或多个简单cookie。/deflate 返回deflate编码的数据。/delay/:n 延迟响应 min(n, 10) 秒。/delete 返回请求数据。仅允许 DELETE 请求。/deny 被robots.txt文件拒绝。/digest-auth/:qop/:user/:password 使用默认MD5算法挑战HTTP摘要认证/digest-auth/:qop/:user/:password/:algorithm 使用指定算法挑战HTTP摘要认证(MD5或SHA-256)/drip?numbytes=n&duration=s&delay=s&code=code 在可选的初始延迟后,在给定持续时间内滴漏数据,模拟慢速HTTP服务器。/dump/request 返回给定请求的HTTP/1.x线路近似表示。/encoding/utf8 返回包含UTF-8数据的页面。/env 返回所有以 HTTPBIN_ENV_ 为前缀的环境变量。/etag/:etag 假设资源具有给定的etag,并适当响应If-None-Match头(200或304)和If-Match头(200或412)。/forms/post 提交到 /post 的HTML表单/get 返回GET数据。/gzip 返回gzip编码的数据。/head 返回响应头。仅允许 HEAD 请求。/headers 返回请求头字典。/hidden-basic-auth/:user/:password 404'd基本认证。/hostname 返回处理请求的主机名称。/html 渲染HTML页面。/image 根据发送的Accept头返回包含图像的页面。/image/jpeg 返回JPEG图像。/image/png 返回PNG图像。/image/svg 返回SVG图像。/image/webp 返回WEBP图像。/internal_report_viewer/ 🆕 反向代理到后端服务(需设置REPORT_BE环境变量)。/ip 返回来源IP。/json 返回JSON。/links/:n 返回包含 n 个HTML链接的页面。/patch 返回请求数据。仅允许 PATCH 请求。/post 返回请求数据。仅允许 POST 请求。/put 返回请求数据。仅允许 PUT 请求。/range/:n?duration=s&chunk_size=code 流式传输 n 字节,并允许指定 Range 头来选择数据子集。接受 chunk_size 和请求 duration 参数。/redirect-to?url=foo&status_code=307 307重定向到 foo URL。/redirect-to?url=foo 302重定向到 foo URL。/redirect/:n 302重定向 n 次。/relative-redirect/:n 302相对重定向 n 次。/response-headers?key=val 返回给定的响应头。/robots.txt 返回一些robots.txt规则。/sse?delay=1s&duration=5s&count=10 服务器发送事件流。/status/:code 返回给定的HTTP状态码。/stream-bytes/:n 流式传输 n 个随机二进制数据字节,接受可选的 seed 和 chunk_size 整数参数。/stream/:n 流式传输 min(n, 100) 行。/trailers?key=val 返回将查询参数作为HTTP Trailers添加的JSON响应。/unstable 一半时间失败,接受可选的 failure_rate 浮点数和 seed 整数参数。/user-agent 返回user-agent。/uuid 生成一个 UUIDv4 值。/websocket/echo?max_fragment_size=2048&max_message_size=10240 WebSocket回显服务。/xml 返回一些XML测试HTTP库有时会变得困难。RequestBin 对于测试POST请求来说很棒,但不能让你控制响应。这个服务的存在就是为了覆盖各种HTTP场景。正在考虑其他端点。
所有端点响应都是JSON编码的。
现在支持通过 /anything/status/{code} 端点返回自定义状态码,同时保持/anything的所有功能。
通过设置 REPORT_BE 环境变量启用 /internal_report_viewer/ 端点的反向代理功能:
export REPORT_BE=backend.example.com:8080
# 然后访问 /internal_report_viewer/any/path 将被代理到 backend.example.com:8080/any/path
{"origin":"73.238.9.52, 77.83.142.42"}
{"user-agent":"curl/7.64.1"}
{
"args": {
"foo": [
"bar"
]
},
"headers": {
"Accept": [
"*/*"
],
"Host": [
"httpbingo.org"
],
"User-Agent": [
"curl/7.64.1"
]
},
"origin": "73.238.9.52, 77.83.142.42",
"url": "https://httpbingo.org/get?foo=bar"
}
HTTP/1.1 404 Not Found
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": [
"*/*"
],
"Host": [
"httpbingo.org"
],
"User-Agent": [
"curl/7.64.1"
]
},
"method": "GET",
"origin": "73.238.9.52",
"url": "https://httpbingo.org/anything/status/404"
}
HTTP/1.1 418 I'm a teapot
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
X-More-Info: http://tools.ietf.org/html/rfc2324
Date: Tue, 13 Jul 2021 13:12:37 GMT
Content-Length: 0
由 Will McCutchen 移植到Go。
基于 原版 Kenneth Reitz 项目。
httpbin.org — 原版 httpbin