API リファレンス
testingapis.com は HTTP クライアントをテストするための無料の API です。53 グループに 360 個のエンドポイントがあります。商品、書籍、国といったリアルなリソースに加え、ステータスコード、リダイレクト、Cookie、キャッシュ、認証方式、ファイル形式、ストリーミング、障害注入のためのエンドポイントもあります。 Echo、HTTP メソッド、ステータスコード、products・posts・todos のリソースはアカウント不要です。それ以外は無料アカウントが必要です。
https://api.testingapis.comfetch('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 UI | https://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 | |
| WebSockets | wss://api.testingapis.com/ws/echowss://api.testingapis.com/ws/ticker |
認証
認証の注記がないエンドポイントは公開されています。認証をテストするエンドポイントは、下の固定のテスト用資格情報を受け付けます。これらは秘密ではありません。
| 方式 | 送り方 | テスト用の値 | 使うエンドポイント |
|---|---|---|---|
| HTTP Basic | Authorization: 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/* |
| JWT | Authorization: Bearer <jwt> | POST /api/auth/jwt/login に admin / admin123 または user / user123 · POST /api/User/Login に Michael / Thompson | /api/auth/jwt/me, /api/auth/jwt/admin, /api/Admin/authorize |
| API key | X-API-Key ヘッダー、?api_key=、または api_key Cookie | apibee-key-123 | /api/auth/api-key/* |
| OAuth 2.0 | Authorization: Bearer <access_token> | クライアント apibee-client / apibee-secret と apibee-public(PKCE) · ユーザー apibee / password123、jane / jane123 | /api/auth/oauth/protected, /userinfo |
| OAuth 1.0a | Authorization: OAuth oauth_consumer_key="…", oauth_signature="…", … | コンシューマー 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/* |
| Digest | RFC 7616 のチャレンジとレスポンス | apibee / password123 | /api/auth/digest |
| HMAC 署名 | X-Timestamp と X-Signature ヘッダー | シークレット apibee-hmac-secret | /api/auth/hmac |
| セッション Cookie | Cookie apibee_session | POST /api/cookies/login に test / test123 または admin / admin123 | /api/cookies/me |
| CSRF | XSRF-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 時刻(秒)と、"{timestamp}.{raw body}" をキー apibee-hmac-secret で計算した HMAC-SHA256 の 16 進数。 |
{{uuid}} | Idempotency-Key として使う新しい UUID(何でもかまいません)。 |
サインインして詳細を見る
認証エンドポイントのパラメータ、リクエストとレスポンスの例、ライブの Try it パネルは、サインインしたメンバー向けです。アカウントは無料で、数秒で作成できます。
遅延とシミュレートしたエラー
どのエンドポイントでも 2 つのクエリパラメータが使えます。
| パラメータ | 効果 | 例 |
|---|---|---|
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 ヘッダー、キーセット、HAL によるページネーションはページネーションで紹介しています。
レスポンスとエラー
| 状況 | ステータス | ボディ |
|---|---|---|
| 1 件取得 | 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には fetch ではなく WebSocket API が必要です。 - 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 エンドポイント全エンドポイントのライブカタログとヘルスチェック。
HTTP の基本
44 エンドポイントメソッド、ステータスコード、リダイレクト、Cookie、キャッシュ、リクエストボディ。
形式とデータ
62 エンドポイントよく使うコンテンツタイプ、ファイルのダウンロード、JSON のエッジケース、ユーティリティ。
認証とセキュリティ
38 エンドポイント認証方式、OAuth 2.0 と 1.0a、JWT、レート制限、決済。
API パターン
50 エンドポイントストリーミング、WebSocket、非同期ジョブ、ページネーション、障害注入など。
リソース
142 エンドポイント商品、投稿、書籍、国などのリアルなデータセット。
旧 API
20 エンドポイントAPI の最初のバージョン。JSON と XML のユーザー、アップロード、認証テスト。