api-response-mocker について
api-response-mockerは、Fakerを使い、定義したスキーマからAPI用のモックデータを生成します。開発やテスト向けで、ネスト構造、配列、データ間の関連、再現可能な生成に対応し、JSONまたはXMLで出力できます。
主な機能
- 01スキーマに基づくレスポンス生成
- 02Fakerによるデータ生成
- 03ネストオブジェクトと配列
- 04モックデータ間の参照
- 05JSONとXMLでの出力
- 06シードによる再現可能な生成
活用シーン
- 01テスト用のAPIレスポンス作成
- 02モックユーザーや商品リストの生成
- 03スキーマから再現可能なデータを生成
- 04ネストしたJSONやXMLのテストデータ作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dkyazzentwatwa/ chatgpt-skills --skill api-response-mockerインストール後、Claude Code で/api-response-mockerを入力して読み込まれたか確認します。
同梱ファイルscripts/api_mocker.pyscripts/requirements.txt
詳細
API レスポンスモッカー
Faker を使用して、偽のデータによるリアルな API レスポンスを生成します。
機能
- スキーマベースの生成:レスポンスの構造を定義します
- Faker との統合:リアルな偽データを生成します
- ネストされたオブジェクト:複雑なネスト構造に対応します
- 配列:オブジェクトのリストを生成します
- 関連付け:ほかのモックデータを参照します
- 複数の形式:JSON、XML 形式で出力します
クイックスタート
from api_mocker import APIMocker
mocker = APIMocker()
# Generate user response
user = mocker.generate({
"id": "uuid",
"name": "name",
"email": "email",
"created_at": "datetime"
})
# Generate list of users
users = mocker.generate_list({
"id": "uuid",
"name": "name",
"email": "email"
}, count=10)
CLI の使い方
# Generate from schema file
python api_mocker.py --schema user_schema.json --output user.json
# Generate list
python api_mocker.py --schema product.json --count 50 --output products.json
# Generate with seed (reproducible)
python api_mocker.py --schema order.json --seed 42 --output order.json
# Preview without saving
python api_mocker.py --schema customer.json --preview
スキーマ形式
Faker プロバイダー名を使用してフィールドを定義します。
{
"id": "uuid",
"first_name": "first_name",
"last_name": "last_name",
"email": "email",
"phone": "phone_number",
"company": "company",
"address": {
"street": "street_address",
"city": "city",
"state": "state",
"zip": "zipcode",
"country": "country"
},
"created_at": "date_time_this_year",
"is_active": "boolean"
}
利用可能なデータ型
個人情報
name、first_name、last_nameemail、safe_emailphone_numberssn
住所
address、street_addresscity、state、state_abbrzipcode、postcodecountry、country_codelatitude、longitude
インターネット
url、domain_nameipv4、ipv6user_name、passworduuid、uuid4mac_address
ビジネス
company、company_suffixjob、job_titlebs、catch_phrase
金融
credit_card_numberiban、bbancurrency_codeprice(カスタム:浮動小数点数を返します)
日付/時刻
date、timedate_time、date_time_this_yeardate_of_birthiso8601
テキスト
text、sentence、paragraphword、wordsslug
数値
random_int、random_numberrandom_float({"type": "float", "min": 0, "max": 100}を使用します)boolean
高度なスキーマ
配列
{
"id": "uuid",
"name": "name",
"tags": {
"_array": true,
"_count": 3,
"_item": "word"
},
"orders": {
"_array": true,
"_count": 5,
"_item": {
"order_id": "uuid",
"amount": "random_int",
"date": "date"
}
}
}
カスタム値
{
"id": "uuid",
"status": {
"_choice": ["pending", "active", "completed"]
},
"priority": {
"_range": [1, 5]
},
"score": {
"_float": {"min": 0.0, "max": 100.0, "decimals": 2}
}
}
ネストされたオブジェクト
{
"user": {
"id": "uuid",
"profile": {
"bio": "paragraph",
"avatar_url": "image_url",
"social": {
"twitter": "user_name",
"linkedin": "url"
}
}
}
}
API リファレンス
APIMocker クラス
class APIMocker:
def __init__(self, locale: str = "en_US", seed: int = None)
# Generation
def generate(self, schema: dict) -> dict
def generate_list(self, schema: dict, count: int = 10) -> list
# File operations
def from_schema_file(self, filepath: str) -> dict
def save(self, data: any, filepath: str, format: str = "json")
# Utilities
def set_seed(self, seed: int)
def get_faker(self) -> Faker
スキーマの例
ユーザーレスポンス
{
"id": "uuid",
"username": "user_name",
"email": "email",
"profile": {
"first_name": "first_name",
"last_name": "last_name",
"avatar": "image_url",
"bio": "sentence"
},
"created_at": "iso8601",
"last_login": "date_time_this_month"
}
E コマース商品
{
"sku": "uuid",
"name": "catch_phrase",
"description": "paragraph",
"price": {"_float": {"min": 9.99, "max": 999.99}},
"currency": "currency_code",
"category": {"_choice": ["Electronics", "Clothing", "Home", "Sports"]},
"in_stock": "boolean",
"rating": {"_float": {"min": 1, "max": 5, "decimals": 1}},
"reviews_count": {"_range": [0, 500]}
}
API エラーレスポンス
{
"error": {
"code": {"_choice": ["NOT_FOUND", "UNAUTHORIZED", "BAD_REQUEST"]},
"message": "sentence",
"request_id": "uuid",
"timestamp": "iso8601"
}
}
依存関係
- faker>=22.0.0
コメント
Markdown 対応