API 参考

testingapis.com 是一个用于测试 HTTP 客户端的免费 API。它有 53 组共 360 个端点:既有商品、图书和国家等真实感资源,也有用于状态码、重定向、Cookie、缓存、认证方式、文件格式、流式传输和故障注入的端点。 Echo、HTTP 方法、状态码,以及 products、posts 和 todos 资源无需账号。其余端点需要一个免费账号。

基础 URL
https://api.testingapis.com
快速开始
fetch('https://api.testingapis.com/api/Products?limit=3')
  .then(res => res.json())
  .then(data => console.log(data))

发现

内容位置
OpenAPI 3.0 文档https://api.testingapis.com/openapi/v1.json登录后查看
Swagger UIhttps://api.testingapis.com/swagger/index.html登录后查看
实时路由目录GET https://api.testingapis.com/api登录后查看
健康检查
GET https://api.testingapis.com/api/healthGET https://api.testingapis.com/api/health/liveGET https://api.testingapis.com/api/health/ready
GraphQL
POST https://api.testingapis.com/graphql
查询与变更
WebSockets
wss://api.testingapis.com/ws/echowss://api.testingapis.com/ws/ticker

认证

没有认证说明的端点是公开的。用于测试认证的端点接受下面这些固定的测试凭据,它们不是秘密。

方式发送方式测试值使用的端点
HTTP BasicAuthorization: Basic base64(user:pass)apibee / password123 · Admin / Admin@1234(原始 API)/api/auth/basic*, /api/AuthTest/secure-data
Bearer (static)Authorization: Bearer <token>apibee-token-123 · admin-token · user-token · readonly-token/api/auth/bearer, /api/auth/roles/*
JWTAuthorization: Bearer <jwt>用 admin / admin123 或 user / user123 调用 POST /api/auth/jwt/login · 用 Michael / Thompson 调用 POST /api/User/Login/api/auth/jwt/me, /api/auth/jwt/admin, /api/Admin/authorize
API keyX-API-Key 请求头、?api_key= 或 api_key Cookieapibee-key-123/api/auth/api-key/*
OAuth 2.0Authorization: Bearer <access_token>客户端 apibee-client / apibee-secret 和 apibee-public(PKCE)· 用户 apibee / password123、jane / jane123/api/auth/oauth/protected, /userinfo
OAuth 1.0aAuthorization: OAuth oauth_consumer_key="…", oauth_signature="…", …Consumer apibee-consumer-key / apibee-consumer-secret · 令牌 apibee-access-token / apibee-token-secret(永不过期)· HMAC-SHA1、HMAC-SHA256、HMAC-SHA512 或 PLAINTEXT/api/auth/oauth1, /api/auth/oauth1/*
DigestRFC 7616 质询与响应apibee / password123/api/auth/digest
HMAC 签名X-Timestamp 和 X-Signature 请求头密钥 apibee-hmac-secret/api/auth/hmac
会话 CookieCookie apibee_session用 test / test123 或 admin / admin123 调用 POST /api/cookies/login/api/cookies/me
CSRFXSRF-TOKEN Cookie 和 X-CSRF-Token 请求头来自 GET /api/auth/csrf/token 的令牌/api/auth/csrf/submit

401 表示凭据缺失或无效。403 表示凭据有效但不被允许,例如在 /api/auth/roles/admin 上使用 user-token。

示例用以下占位符表示每次运行都会变化的值:

占位符获取方式
{{userJwt}} / {{adminJwt}}用 user / user123 或 admin / admin123 调用 POST /api/auth/jwt/login 得到的 accessToken。
{{refreshToken}}POST /api/auth/jwt/login 返回的 refreshToken。
{{legacyJwt}}用 Michael / Thompson 调用 POST /api/User/Login 得到的 token(角色 Admin)。
{{oauthAccessToken}}POST /api/auth/oauth/token 返回的 access_token。
{{oauth1RequestToken}} / {{oauth1RequestSecret}} / {{oauth1Verifier}}带 oauth_callback=oob 调用 POST /api/auth/oauth1/request_token 得到的 oauth_token 和 oauth_token_secret,再加上 GET /api/auth/oauth1/authorize 返回的 oauth_verifier。
{{csrfToken}}GET /api/auth/csrf/token 返回的 token。同样的值也会设置为 XSRF-TOKEN Cookie。
{{sessionId}}POST /api/cookies/login(test / test123)设置的 apibee_session Cookie。
{{unixTimestamp}} / {{hmacSignature}}当前的 Unix 时间(秒),以及用密钥 apibee-hmac-secret 对 "{timestamp}.{raw body}" 计算的十六进制 HMAC-SHA256。
{{uuid}}任意一个新的 UUID,用作 Idempotency-Key。

登录后查看详情

认证端点的参数、请求和响应示例以及实时 Try it 面板仅对已登录的成员开放。账号免费,几秒钟就能创建。

延迟与模拟错误

有两个查询参数适用于所有端点:

参数作用示例
delay等待 N 秒后再响应,最多 10 秒。/api/Products?delay=2
error返回模拟的错误而不是真实的响应:400、401、403、404、408、429、500、502 或 503。会加上 X-Simulated: true 响应头。/api/Products?error=503

组合使用时,例如 ?delay=2&error=503,请求会先等待再失败。模拟的错误如下:

模拟错误
{
  "status": 503,
  "error": "Service Unavailable",
  "message": "Simulated error. Use ?error={code} to test different status codes.",
  "simulated": true
}

筛选、排序与分页

所有列出资源的端点(例如 GET /api/Products)都接受以下查询参数:

参数含义示例
limit每页条数,1 到 100。不传则返回全部记录。?limit=10
page从 1 开始的页码,需要配合 limit。?limit=10&page=2
offset跳过 N 条记录,可代替 page。?limit=10&offset=20
sort, order按任意字段排序。order 为 asc(默认)或 desc。?sort=price&order=desc
q在 title、name、body、description 和 text 字段中不区分大小写地搜索。?q=keyboard
任意字段对该属性做不区分大小写的精确筛选。?category=books&inStock=true

列表返回一个普通的 JSON 数组。总数在 X-Total-Count、X-Page、X-Per-Page 和 X-Total-Pages 响应头中。游标、Link 响应头、keyset 和 HAL 分页见分页。

响应与错误

情况状态码响应体
获取一条记录200该记录
列出记录200记录数组,加上分页响应头
创建201{ message, data }
批量创建201{ message, data: [ … ] }
替换或更新200{ message, data }
部分更新(PATCH)200{ message, changed, ignored, data }
删除200{ message }
批量删除200{ message, deleted, notFound }
错误4xx 或 5xx{ status, error, message }
模型校验错误400带逐字段错误的 application/problem+json
业务校验422带逐字段错误的 application/problem+json(RFC 7807)
错误
{
  "status": 404,
  "error": "Not Found",
  "message": "Book with ID 999 does not exist."
}

每个响应都允许任何来源(Access-Control-Allow-Origin: *,不带凭据),并向浏览器代码公开分页、缓存、限流和版本控制相关的响应头。X-RateLimit-* 响应头仅供参考;真正的限流只发生在限流端点上。

所有数据都保存在内存中。创建、更新和删除都可以,但服务器重启后一切都会恢复为初始数据。

在浏览器中调用

  • Cookie。 浏览器不允许 JavaScript 设置 Cookie 请求头,跨域请求也不携带凭据。基于 Cookie 的端点只能在同源下或通过代理使用。
  • 重定向。 fetch() 会跟随重定向并隐藏 3xx 响应。要看到真实的状态码和 Location 响应头,请使用代理。
  • 代理。 POST /api/Proxy/call 从服务器转发请求,并返回其状态码和响应体。它能绕开 CORS、Cookie 和重定向的限制,但不会转发响应头。
  • 流。 /api/stream/sse 是 Server-Sent Events。NDJSON、chunked、drip 和 JSON 数组流会逐步到达,请用流式读取器读取。
  • WebSocket。 /ws/echo 和 /ws/ticker 需要使用 WebSocket API,而不是 fetch。
  • Digest 认证。 浏览器只会通过自己的登录对话框完成质询与响应。
  • 故障注入。 /api/chaos/abort 和 /api/chaos/partial 会故意断开连接。/api/chaos/timeout 和 /api/chaos/slow 最长可能需要 60 秒。
  • 禁止的请求头。 浏览器拒绝设置 Host、Content-Length、Accept-Encoding、Cookie 等少数请求头。

登录后查看详情

这些说明的参数、请求和响应示例以及实时 Try it 面板仅对已登录的成员开放。账号免费,几秒钟就能创建。

端点

53 组共 360 个端点。每个分组都可打开其参考文档,包含参数以及请求和响应示例。

从这里开始

4 个端点

所有端点的实时目录,加上健康检查。