ルートとダミーデータ
モックのルートを手書きで作成します。JSON、XML、テキストのレスポンス、リクエストごとに変わるダミーデータ、レスポンスを選ぶルール、ルートから作るリクエストを使えます。
ルートは、メソッドとパス、そしてモックがそこで返す応答です。まだ仕様がないとき、開発やテストのために数個のエンドポイントが必要なとき、仕様とは異なる応答をパスに返したいときに、ルートを手書きで作成します。 ボディは送信されるとおりにJSON、XML、テキストで書き、リクエストごとに作り直されるダミーデータを含められます。
手書きのルートは、モックのJavaScriptのルートの後、仕様を提供している場合はその仕様のオペレーションの前に応答します。リクエストが受け取るレスポンスを参照してください。
ルートを作成する
モックページで新規モックを選んでモックを作成する(最初に、5人分のダミーのユーザーを返すGET /usersルートが含まれます)か、既存のモックを開きます。ルートカードに、そのモックのルートが一覧表示されます。
- チェックボックスで、ルートを削除せずにオフにできます。オフのルートは何も応答しません。
- ルートをクリックすると、リストの下で編集できます。
- ルートを追加は、選択したルートの後に新しいルートを追加します。
- ルートを右クリックすると、複製、リクエストを作成、アドレスをコピー(モックの動作中)、上へ移動、下へ移動、ルートを削除を選べます。
変更はすべてすぐに保存され、動作中のモックにもすぐに反映されます。編集 › 取り消すで、ルートの削除も含め、どの変更も元に戻せます。 オンの2つのルートが同じメソッドとパスを持つ場合、カードに警告が表示されます。応答するのは最初のルートだけです。

メソッド、パス、概要
- ルート:メソッド(GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS、またはすべてのメソッドを表すANY)とパス。
HEADリクエストは、ボディなしでGETルートに渡されます。 - パスパラメータは
{id}または:idと書き、パスの1つの部分につき1つ使います。/users/{id}、/files/{name}.jsonのようになります。:idは{id}として保存されます。固定の部分を持つルートはパラメータを持つルートより優先されるため、/users/meは/users/{id}より先に応答します。 - 概要は、ルートの用途を説明します。ルートから作成したリクエストは、これを名前にします。
レスポンス
ルートには1つ以上のレスポンスがあります。レスポンスの下のチップで切り替え、+で追加します。各レスポンスには次の項目があります。
| フィールド | 内容 |
|---|---|
| 名前 | リクエストやルールがそれを指す名前。OKやNot foundなど。名前はルート内で一意です。 |
| ステータス | ステータスコード(100〜999)。 |
| Content-Type | 送信されるContent-Type。application/jsonやapplication/xmlなど。横のメニューによく使うタイプが並んでいます。空の場合は送信しません。ボディ内の値のエスケープ方法も、これで決まります。 |
| ヘッダー | 一緒に送信されるヘッダー。ボディと同じように、値にダミーデータやリクエストの一部を含められます。 |
| ルール | デフォルトの代わりにこのレスポンスが応答する条件。レスポンスの選択を参照してください。 |
| ボディ | 送信される内容。JSON、XML、HTMLでは行番号と色が付きます。 |
チェックマークが付いたレスポンスがルートのデフォルトで、別のレスポンスのデフォルトにするで変更できます。ゴミ箱ボタンで、レスポンスを削除します。
レスポンスの選択
ルートへのリクエストは、次の順序でレスポンスを受け取ります。
- リクエストが指定したレスポンス:
Prefer: example=Not foundまたはPrefer: code=404ヘッダー、またはPostmanのx-mock-response-nameとx-mock-response-codeヘッダー。 - すべてのルールに合致する最初のレスポンス。
- ルートのデフォルト:デフォルトにするでデフォルトにしたレスポンス(ルールにかかわらず)。デフォルトを選んでいないルートでは、ルールに合致しなかった最初のレスポンスは、ルールのない最初のレスポンスに道を譲ります。そのため、先頭に置いた「発送済みの注文には409」が、ほかのすべての注文に応答することはありません。
ルールは、リクエストの1つの部分を調べます。
| ルール | 名前 | 例 |
|---|---|---|
| パスパラメータ | パスのパラメータ | idが0 |
| クエリパラメータ | クエリパラメータ | pageが* |
| ヘッダー | ヘッダー(大文字と小文字は区別しません) | X-Roleがadmin |
| ボディのフィールド | JSONボディへのキーのパス。リストの項目は数字で指定し、ボディ全体なら空 | user.planがpro、items.0.skuがTNT-MH-2P |
値は、その部分が持つべきテキストです。*は、何かしらの値があれば何でもよいことを表し、空の値は、その部分が存在しないことを表します。
複数のルールを持つレスポンスは、すべてのルールに合致したときだけ応答します。名前のないルールは、名前を付けるまでスキップされます。
たとえば、GET /users/{id}ルートはデフォルトでユーザーとともに200を返し、ルールパスパラメータ idが0の404レスポンスを持たせられます。
curl -i http://127.0.0.1:4010/users/42 # 200, the user
curl -i http://127.0.0.1:4010/users/0 # 404
ダミーデータを含むボディ
ボディやヘッダーの値にある{{ }}の中身は、リクエストが届いたときに埋め込まれるため、リクエストごとに新しいデータを返せます。ボディのそれ以外の部分は、書いたとおりに送信されます。
{
"id": "{{request.params.id}}",
"name": "{{$randomFullName}}",
"email": "{{$randomEmail}}",
"company": "{{$randomCompanyName}}",
"joined": "{{$randomDatePast}}"
}ダミーの値
{{$randomFirstName}}、{{$randomEmail}}、{{$randomCity}}、{{$randomPrice}}、{{$randomUUID}}など約120種類があります。
名前と職業、インターネット、住所、電話番号、会社、金融、商品、日付、単語、ロレムイプサム、ファイル、画像、データベースに分かれています。
名前はPostmanの動的変数と同じなので、Postman向けに書いたテンプレートがそのまま使えます。
引数を取るものもあります:{{$randomInt(1, 100)}}、{{$randomPrice(5, 50)}}、{{$randomLoremWords(5)}}、{{$randomElement(active, paused, closed)}}。
すべての一覧は動的な値にあります。
ボディの上の値を挿入は、カーソルの位置にダミーの値を挿入します。ダミーデータにグループ別に並んでいます。
同じ値はリクエストでも使え、送信のたびに作成されます。動的な値を参照してください。
リクエストの一部
| トークン | 内容 |
|---|---|
{{request.params.id}} | パスパラメータ。 |
{{request.query.page}} | クエリパラメータ。ない場合は空。 |
{{request.headers.X-Trace}} | ヘッダー(大文字と小文字は区別しません)。 |
{{request.body.user.name}} | JSONボディのフィールド。キーのパスで指定します(リストの項目はitems.0.sku)。テキストはそのまま、数値、true、false、オブジェクト、リストはJSONで挿入されます。 |
{{request.body}} | ボディ全体をテキストで。 |
{{request.method}} | メソッド。POSTなど。 |
{{request.path}} | パス。/users/42など。 |
値を挿入 › リクエストに、そのルート自身のパスパラメータとともに並んでいます。
リスト
{{#repeat 10}}…{{/repeat}}は、その間の内容を指定した回数だけ書き出します。{{#repeat 2 8}}は、2つの数の間の回数を、リクエストごとに選んで書き出します。
JSONボディでは、項目の区切りのカンマが自動的に付きます。
内側では、{{@number}}が1から数えた項目の番号、{{@index}}が0から数えた番号になります。繰り返しの中に繰り返しを入れられます。
[
{{#repeat 5}}
{
"id": {{@number}},
"name": "{{$randomProductName}}",
"price": {{$randomPrice}}
}
{{/repeat}}
]{{#repeat}}や{{/repeat}}だけの行は、空行を残しません。
エスケープ
値は埋め込まれる場所に合わせてエスケープされるため、引用符を含む名前でもJSONが壊れることはありません。
- JSONボディ(
jsonを含むContent-Type)では、文字列の中の値はJSONとしてエスケープされます。{{$randomInt}}や{{@number}}のように引用符の外にある値は、そのまま入ります。 - XMLとHTML(
xmlまたはhtmlを含むContent-Type)では、&、<、>、引用符がどこでもエスケープされます。 - 三重の波括弧はエスケープしません:
{{{request.body}}}は、リクエストのJSONボディをJSONとして入れます。
{ "received": {{{request.body}}}, "at": "{{$isoTimestamp}}" }Echolotが知らないトークンは、書いたままになります。{{$randomInt(9, 1)}}のように値を作れない場合も書いたままになり、ログに理由が表示されます。
ボディは16 MB、繰り返しは10,000項目で止まります。
ボディはそれ以外を一切読み取りません。ワークスペースの変数、環境、シークレット、ファイルは使えないため、ネットワークで応答するモックから漏れることはありません。
固定データ:生成
{{ }}の値は、リクエストごとに新しいデータを返します。毎回同じデータで応答するには、ボディの上の生成…をクリックします。
- リストを作成:ボディを1つの項目としますを選ぶと、ボディが、ボディから作成した項目数の項目を持つJSONのリストになります。
- 選ばない場合は、ボディの値が一度だけ埋め込まれます。
生成はボディを結果で置き換えます。編集 › 取り消すでテンプレートに戻せます。ターミナルからは、echolot fakeで同じことができます。
ルートからのリクエスト
ルートカードのリクエストを作成は、モックの名前を付けたフォルダを作成し、オンのすべてのルートに対するリクエストを入れます。ルートのコンテキストメニューのリクエストを作成は、そのルートだけのリクエストを作成します。Echolotは最初のリクエストを開きます。
- フォルダには、モックのアドレスを設定した変数
baseUrlがあり、すべてのURLがそれで始まります:{{baseUrl}}/users/{{id}}。あとでbaseUrlを実際のAPIに向ければ、同じリクエストがそちらに送信されます。 - パスパラメータはリクエストの変数になり、デフォルトのレスポンスのパスのルールが値を指定していなければ
1になります。 - リクエストには、ルートの概要が名前として付きます。
- ルートのリクエストボディも一緒に入ります。
ルートのリクエストボディ
ルートの下部のリクエストボディには、そのルートから作成するリクエストのボディとContent-Typeを設定します。POST /usersが受け取るJSONなどです。
モックの応答は変わりません。ボディのフィールドに対するルールは、実際に送信されたリクエストを読み取ります。
エージェントと使う
モックツールセットをオンにすると、エージェントとアシスタントもルートを作成できます。必要なことを頼んでください。
- 「注文の一覧、取得、作成のルートをダミーデータ付きで持つモックを作って、開始して」
- 「idが0のときの404を
GET /users/{id}に追加して」 - 「モックのルートからリクエストを作って」
エージェントは、create_mock(名前とルートを指定します。仕様は不要です)、save_mock_route、delete_mock_route、generate_fake_data、list_fake_values、create_requests_from_mockを使います。
save_mock_routeは、履歴のレスポンスをルートにすることもできます。コピーされる内容は、エージェントが読み取るほかのものと同じようにマスクされます。
エージェントがルートを削除するときは、最初に確認が表示されます。エージェントを参照してください。
ワークスペース内では
ルートはモックのファイルmocks/<name>.tomlに、[[routes]]とその[[routes.responses]]として保存されます。差分で読みやすく、Gitで共有できます。ワークスペースのファイルを参照してください。

