フロントエンドを構築したり、クライアントをデバッグしたり、新しいHTTPライブラリを学習したりする際に、バックエンドを立ち上げずに、本物のように見えるJSONを返すエンドポイントが必要になることがよくあります。ダミーAPIはまさにそれを提供します。つまり、今すぐ呼び出せる、パブリックで無料の常時稼働サービスです。このガイドでは、最適なパブリックダミーAPIをリストアップし、それらを呼び出す方法を示し、他人のデータを借りるのをやめて、独自の偽のREST APIを構築するべき時について説明します。パブリックAPIの全体像についてさらに深く学びたい場合は、Fetch APIの使用に関するMDNガイドが、以下の内容とよく合います。
ダミーAPIとは何か
ダミーAPIは、ユーザー、投稿、製品、カート、TODOなど、一般的なリソースタイプに対して、あらかじめ用意された現実的なJSONを返すホスト型サービスです。サインアップも、ホスティングも、本番データを破壊する心配もありません。ほとんどのダミーAPIはGET、POST、PUT、PATCH、DELETEを受け入れますが、書き込み操作は通常は偽装されています。サーバーはペイロードをIDとともにエコーバックし、保存されたふりをしますが、実際には何も永続化されません。
これが、ダミーAPIに頼る前に理解すべき重要な特徴です。ダミーAPIは、読み込みが中心のプロトタイピングや、リクエストコードが機能することの証明に最適です。ただし、ステートフルな動作、独自のデータ形式、またはカスタムのエラー条件が必要になった途端に、不適切になります。
テストに最適な無料のダミーAPIとフェイクAPI
知っておくべきパブリックAPIを以下に示します。これらはすべて無料で、バックエンドのセットアップは不要です。
JSONPlaceholder
JSONPlaceholderは定番です。100の投稿、500のコメント、100のアルバム、5,000の写真、200のTODO、10のユーザーという6つの関連リソースを提供します。関係性は実際のデータに基づいているため、投稿にはコメントがあり、アルバムには写真があります。これにより、ネストされたフェッチのテストに適しています。
curl https://jsonplaceholder.typicode.com/posts/1
単一の投稿オブジェクトが返されます。書き込みリクエストは受け入れられますが保存されないため、POST /postsは常に偽のid: 101を返します。
DummyJSON
DummyJSONは、より広範囲をカバーします。製品、カート、ユーザー、投稿、コメント、引用、TODO、レシピを提供し、トークンを渡す認証フローも備えています。ショッピングカートUIやログイン画面をテストしている場合は、これを選ぶべきです。
curl https://dummyjson.com/products/1
認証エンドポイントでは、ユーザー名とパスワードをPOSTしてJWTを受け取ることができます。これは、実際のIDプロバイダーを接続することなく、トークンストレージと認証済みリクエストを練習するのに便利です。
reqres.in
reqres.inは、リクエストとレスポンスのライフサイクルに焦点を当てています。ユーザー一覧、単一ユーザー、登録、ログイン、遅延レスポンスなどです。ページネーションと認証フローのデモ用に構築されています。知っておくべきこととして、無料枠では現在APIキーヘッダーが必要です。リクエストにx-api-key: reqres-free-v1を送信しないと、401エラーが発生します。
curl https://reqres.in/api/users/2 -H "x-api-key: reqres-free-v1"
それぞれの使いどころ
| ダミーAPI | 最適用途 | 認証フロー | 書き込みの永続性 |
|---|---|---|---|
| JSONPlaceholder | ネストされた読み込み、ブログ形式のデータ | なし | 偽装、保存なし |
| DummyJSON | Eコマース、カート、ログイン | あり(トークン) | 偽装、保存なし |
| reqres.in | ページネーション、登録/ログインのデモ | APIキーヘッダー | 偽装、保存なし |
これら3つ以外にも幅広い選択肢が必要な場合は、テスト用のパブリックAPIのまとめでより専門的な選択肢が紹介されています。開発者向けの無料パブリックAPIリストは、天気や通貨のようなテーマ別データが必要な場合に役立ちます。
コードでダミーAPIを呼び出す方法
ダミーAPIを呼び出すのは、他のHTTPエンドポイントを呼び出すのと同じです。以下は、ユーザーを読み込み、新しいユーザーを投稿するJavaScriptのシンプルなfetchの例です。
// 読み込み
const res = await fetch('https://dummyjson.com/users/1');
const user = await res.json();
console.log(user.firstName);
// 書き込み (エコーバックされるが、永続化されない)
const created = await fetch('https://dummyjson.com/users/add', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ firstName: 'Ada', lastName: 'Lovelace' }),
});
console.log(await created.json()); // 偽のIDを持つオブジェクトを返す
requestsを使ったPythonでも、同様に簡潔です。
import requests
r = requests.get("https://jsonplaceholder.typicode.com/todos/1")
print(r.json())
これらのいずれかをテストファイルに記述すれば、アサートするための動作する統合が完成します。アサートに信頼できる値が必要な場合は、現実的なAPIテストデータの作成に関するガイドで、test123のようなものではなく、本番トラフィックのように見える名前、メールアドレス、タイムスタンプを生成する方法が示されています。
パブリックダミーAPIでは不十分になる時
パブリックダミーAPIは、ニーズが具体的になるまでは非常に便利です。しかし、いくつかの一般的な状況で壁にぶつかるでしょう。
- データの形状が一致しない場合。あなたのアプリは
subscription_tierフィールドとネストされたbillingオブジェクトを期待しています。JSONPlaceholderはpostsとalbumsを提供します。彼らのスキーマをあなたのものに合わせることはできません。 - 状態が必要な場合。実際のカートはアイテムを追加すると更新されます。ダミーAPIは、POSTが返された瞬間にそれを忘れてしまいます。
- 制御された障害が必要な場合。パブリックサービスが常に正常に動作している場合、UIが429エラー、遅延した200レスポンス、または不正な形式のボディをどのように処理するかをテストするのは困難です。
- バックエンドが存在する前に構築している場合。フロントエンドチームとバックエンドチームは、同時に作業を開始することがよくあります。APIがリリースされるまで待つのではなく、合意された契約に今日から一致するエンドポイントが必要です。
その時点では、借り物のAPIは必要ありません。あなたのデータ形状を返し、要求に応じて、あなたが制御するレスポンスを返す独自の偽のAPIが必要です。それがテスト用に構築されたモックAPIであり、Apidogが適合する場所です。
Apidogで独自の偽APIを構築する方法
Apidogは、設計、テスト、デバッグ、モックを1つの場所で組み合わせたAPIプラットフォームです。そのモック機能はスキーマ駆動型であり、エンドポイントの構造を読み取り、組み込みのFakerルールを使用して現実的な偽データを自動的に生成します。一度形状を定義すれば、すべてのリクエストで新しくもっともらしい値が返されます。

以下に、ワークフローの簡単な説明を示します。
- エンドポイントを作成またはインポートします。Apidogで新しいAPIを定義するか、既存のOpenAPIまたはSwaggerファイルをインポートします。Apidogはスキーマを直接読み取ります。
- スマートモックにデータを入力させます。
emailという名前のフィールドには、Apidogはメールアドレスを返します。createdAtには、タイムスタンプを返します。priceには、数値を返します。フィールドごとにこれらのルールを調整できるため、countryフィールドはランダムな文字列ではなく、実際の国名を返します。 - ローカルモックURLにアクセスします。Apidogはモックサーバーを起動し、各エンドポイントのURLを提供します。フロントエンド、テスト、またはcurlから呼び出します。パブリックダミーAPIとまったく同じですが、レスポンスは契約に合致しています。
- 条件付きおよびエラーレスポンスを追加します。リクエストに基づいて、モックが500、404、または遅延レスポンスを返すように設定します。これで、パブリックサービスでは再現できない「不都合な経路」をテストできるようになります。
モックは仕様から生成されるため、設計の進化に合わせて同期が保たれます。フィールドを変更すると、モックにもそれが反映されます。仕様から直接モックを生成することについて、より広範な見解が必要な場合は、OpenAPIスキーマからモックデータを生成するに関するチュートリアルで、Fakerの側面についてさらに深く掘り下げています。
パブリックダミーAPI vs. 独自のApidogモック
| 必要性 | パブリックダミーAPI | Apidogモック |
|---|---|---|
| クイックな読み取り専用データ | 優れている | 優れている |
| 正確なデータ形状 | なし | あり |
| カスタムエラーおよび遅延レスポンス | なし | あり |
| OpenAPI契約に合致 | なし | あり |
| セットアップ時間 | ゼロ | 数分 |
どちらか一方が厳密に優れているわけではありません。パブリックダミーAPIは、5秒以内に何らかのJSONが必要な場合に優位です。一方、実際の契約に対する正確性が重要になる瞬間には、独自のApidogモックが優位に立ちます。ほとんどのチームは両方を使用しています。使い捨ての実験にはパブリックなものを使用し、リリースされるすべてのものにはプロジェクトのモックを使用します。
よくある質問
ダミーAPIはモックAPIと同じですか?
それらは重複しますが、同一ではありません。ダミーAPIは通常、JSONPlaceholderのように、固定されたサンプルデータを持つ公開された共有サービスを意味します。モックAPIは、自分で定義して制御し、独自の形状と動作を返すものです。ダミーAPIは、他者がすでにホストしているモックの一種です。この区別を詳しく知りたい場合は、モックAPIとは何かに関する説明をご覧ください。
無料の偽APIは実際のデータで使用しても安全ですか?
いいえ。実際のユーザーデータ、秘密、またはトークンをパブリックダミーAPIに送信してはいけません。POSTしたものはすべてログに記録され、可視化されるものとして扱ってください。使い捨てのテスト値のみで使用してください。プライバシーや永続性が必要な場合は、独自のモックをホストしてください。
ダミーAPIは私が送信したデータを保存しますか?
ほとんどの場合、保存されません。JSONPlaceholder、DummyJSON、およびreqres.inはすべて書き込みリクエストを受け入れ、生成されたIDとともに結果をエコーバックしますが、何も永続化されません。ページを更新すると、「作成された」レコードは消えてしまいます。状態を維持する必要がある場合は、ステートフルなモックまたは実際のバックエンドが必要です。
コードを書かずに偽APIを構築できますか?
はい。Apidogを使用すると、エンドポイントの形状を定義し、スマートモックにデータを生成させることができます。サーバーコードは不要です。OpenAPIファイルをインポートして、数分で動作するモックエンドポイントを取得することもできます。
まとめ
JSONPlaceholder、DummyJSON、reqres.inのようなパブリックダミーAPIは、プロトタイピングや学習のために現実的なJSONを最速で取得する方法です。費用はかからず、セットアップも不要です。独自のデータ形状、実際の状態、または制御されたエラーレスポンスが必要になった瞬間に、自分自身が所有する偽APIを構築しましょう。
Apidogはまさにそれを可能にします。仕様をインポートし、スキーマ駆動型のモックデータを取得し、数分で独自のAPIエンドポイントを呼び出すことができます。Apidogをダウンロードして、次のAPI契約を、バックエンドコードが1行も存在しないうちに動作するモックに変えましょう。Apidogで、それがあなたのテストワークフローにどのように適合するかをご覧ください。
