Tips
カスタムレスポンス
クエリパラメータ mock_response
を指定することで、動的にレスポンスを変更できます。
リクエスト | 取得されるレスポンスファイル |
---|---|
GET /users |
responses/users/get/default.json |
GET /users?mock_response=success |
responses/users/get/success.json |
POST /users?mock_response=failed |
responses/users/post/failed.json |
POST /users?mock_response=400 |
responses/users/post/400.json |
レスポンスの遅延
JSON ファイル内に mockDelay
を設定すると、レスポンスを遅延できます。
responses/users/get/default.json
{
"id": 1,
"name": "John Doe",
"mockDelay": 1000
}
→ 1秒後にレスポンスが返る
クエリパラメータの取り扱い
クエリパラメータは全て取得され、リクエストデータ(
request_data['query_params']
)に含まれます。mock_response
とmock_content_type
は内部で処理されるため、リクエストデータには含まれません。例:
GET /users?filter=name&sort=asc
の場合、リクエストデータは以下のようになります:{ "query_params": { "filter": "name", "sort": "asc" }, "body": {} }
カスタム
Content-Type
の設定
デフォルトのレスポンスは application/json
もしくは
text/plain
ですが、任意の Content-Type
を指定することも可能です。
CSVファイルを返す場合
レスポンスとして responses/others/get/default.txt
を登録(内容は下記参照)。
id,name,email
1,John Doe,john@example.com
2,Jane Doe,jane@example.com
リクエストとして
GET others?mock_content_type=text/csv
を呼び出すことで
others.csv
が取得できます(ブラウザ経由であればダウンロードされます)。
XMLファイルを返す場合
レスポンスとして responses/others/get/userlist.txt
を登録(内容は下記参照)。
users>
<user>
<id>1</id>
<name>John Doe</name>
<user>
</user>
<id>2</id>
<name>Jane Doe</name>
<user>
</users> </
リクエストとして
GET others?mock_response=userlist&mock_content_type=application/xml
を呼び出すことでXML形式のデータを取得できます。
カスタムフック
特定のメソッド+エンドポイントに対して既定のレスポンスを返す前にカスタム処理をフックさせることができる機能です。
hooks/{メソッド}_{エンドポイントのスネークケース文字列}.php
のファイルを設置することで有効化されます。 例:
GET users
のエンドポイント用カスタムフック
hooks/get_users.php
<?php
// 例: GET メソッドでエンドポイントが `/users` の場合にフック
if (isset($request_data['query_params'])) {
$filter = $request_data['query_params']['filter'] ?? null;
// クエリパラメータに `filter` が指定されていた場合
if ($filter) {
$sort = strtolower($request_data['query_params']['sort']) === 'desc' ? 'desc' : 'asc';
header('Content-Type: application/json');
echo json_encode([
'data' => [
['id' => 1,
'name' => 'Alice',
'age' => 24,
,
]
['id' => 2,
'name' => 'Bob',
'age' => 27,
,
],
];
])// レスポンスを返したらスクリプトを終了
exit;
} }
GET users?filter=name
のクエリパラメータが付与されたリクエストの場合のみ下記のレスポンスが取得できます。
{
"data": [
{
"id": 1,
"name": "Alice",
"age": 24
},
{
"id": 2,
"name": "Bob",
"age": 27
}
]
}
動的パラメータ
GET users/{group}/{limit}
のような動的パラメータを含むエンドポイントへのリクエストについて、
responses/users/get
のレスポンスルートでパラメータ部をリクエストパラメータとして取得できます。取得したリクエストパラメータを使用してレスポンスを制御するにはカスタムフックを利用します。
例: GET users
のエンドポイント用カスタムフック
hooks/get_users.php
<?php
// 例: 動的パラメータのフック `GET /users/{group}/{limit}`
$pattern = '/^dynamicParam\d+$/';
$matchingKeys = preg_grep($pattern, array_keys($request_data));
if (!empty($matchingKeys)) {
// 動的パラメータの抽出
$filteredArray = array_filter($request_data, function ($key) use ($pattern) {
return preg_match($pattern, $key);
, ARRAY_FILTER_USE_KEY);
}extract($filteredArray);
$group = isset($dynamicParam1) ? $dynamicParam1 : 'default';
$limit = isset($dynamicParam2) ? (int) $dynamicParam2 : 0;
header('Content-Type: application/json');
$response = [
'group' => $group,
'limit' => $limit,
'users' => [],
;
]for ($i = 1; $i <= $limit; $i++) {
$response['users'][] = [
'id' => $i,
'name' => "User {$i} (Group: {$group})",
;
]
}echo json_encode($response, JSON_PRETTY_PRINT);
exit;
}
GET users/groupA/3
の動的パラメータを含むリクエストの場合に下記のレスポンスが取得できます。
{
"group": "groupA",
"limit": 3,
"users": [
{
"id": 1,
"name": "User 1 (Group: groupA)"
},
{
"id": 2,
"name": "User 2 (Group: groupA)"
},
{
"id": 3,
"name": "User 3 (Group: groupA)"
}
]
}