araiyusuke / laravel-fake-api
laravel fake api
v1.0.1
2022-06-16 06:00 UTC
This package is auto-updated.
Last update: 2025-06-04 16:32:15 UTC
README
yml形式のファイルを使ってLaravelにAPIのモック環境を構築するライブラリ
- Fakerのメソッドを使ってランダムな値を返せます。
- レイアウト機能を使えば共通のレイアウトを返すことができます。
- LaravelのValidationルールが使えます。
- authをtrueにすることでBearer認証を有効にできます。
- repeatCountを指定すれば連続の値を出力できます。
LaravelのRoute定義ファイルで初期化してください。
try { $file = new StorageFile(); $parser = YmlParser::createFromFile($file, "./fakeapi/api-config.yml"); FakerApi::setLang("ja_JP"); FakerApi::registRoute($parser->getPaths()); } catch (ConfigFileValidationErrorException $e) { foreach($e->getMessages() as $message) { print($message . "\n"); } } catch (Exception $e) { echo $e->getMessage(); }
api-config
APIの設計はyml形式で行う。
fakeapi: 1.0.0 layout: success: | { "code": "200", "message": "ok", "data": [ %data% ] } error: | { "code": "203", "message": "error", "data": %data% } paths: /demo/me: get: description: 単体のユーザー情報を返す statusCode: 201 layout: success auth: false responseJson: | { "numberBetween": %rand_numberBetween(3,4)_1%, "id": "%id%", "word": "%rand_word%", "isbn10": "%rand_isbn10%", "uuid": "%rand_uuid%", "prefecture": "%rand_prefecture%", "ipv4": "%rand_ipv4%", "year": "%rand_year%", "day": "%rand_day%", "month": "%rand_month%", "time": "%rand_time%", "kanaName": "%rand_kanaName%", "firstKanaName": "%rand_firstKanaName%", "lastKanaName": "%rand_lastKanaName%", "company": "%rand_company%", "latitude": %rand_latitude%, "longitude": %rand_longitude%, "realText": "%rand_realText(50)%", "boolean": %rand_boolean_1%, "boolean": %rand_boolean_2%, "isbn13": "%rand_isbn13%", "mail": "%rand_email_1%", "name" : "%rand_name%", "password": "%rand_password_1%", "address": "%rand_city% %rand_streetAddress_1% %rand_postcode% ", "phoneNumber": "%rand_phoneNumber_1%", "country": "%rand_country%", "url" : "%rand_url_11%", "city": "%rand_city%", "gender": { "hoge": "%rand_randomElement(男,女)%", }, "mobile_number": "%rand_randomElement(090,080)_1% - %rand_randomNumber(4)_1% - %rand_randomNumber(4)_1%", "mobile_number": "%rand_randomElement(090,080)_2% - %rand_randomNumber(4)_2% - %rand_randomNumber(4)_2%", "rand_number": %rand_randomNumber(9)%, "pet": "%rand_randomElement(犬, 猫)%", "id": %rand_randomElement(1, 2)%, "creditCardNumber": "%rand_creditCardNumber%", } requestBody: name: required|max:5 mail: required|max:20 post: description: 単体のユーザー情報を返す statusCode: 200 auth: false responseJson: | { "id": "%id%", "mail": "%rand_safeEmail%", "name" : "%rand_name%" } requestBody: name: required|max:5 mail: required|max:20 /demo/mqtt: get: description: mqttを単体で取得 statusCode: 200 responseJson: | { "id": "%id%", "mail": "%rand_safeEmail%", "name" : "%rand_name%" } requestBody: id: required /demo/goal: get: description: 単体のユーザー情報を返す method: GET layout: error statusCode: 200 repeatCount: 5 responseJson: | { "incrementId": %increment_id%, "goal": { "goalType": "%rand_randomElement(LOSE, GAIN)%", "startDate": "2018-06-13", "startWeight": %randomFloat(3,0,10)%, "weight": %randomFloat(3,0,10)%, "weightThreshold": %randomFloat(3,0,10)% } } requestBody: user-id: required goal-type: required
suffixを使えば、同じメソッド名で異なるランダムな値を返すことができます
メソッド名_1, メソッド名_2, メソッド名_3
Generators Method
method name | random value |
---|---|
rand_name | 漢字のフルネーム |
rand_firstName | 名前 |
lastName | 名字 |
rand_kanaName | カタカナのフルネーム |
rand_firstKanaName | カタカナの名前 |
rand_lastKanaName | カタカナの名字 |
rand_country | 国 |
rand_prefecture | 県 |
rand_year | 年 |
rand_month | 月 |
rand_day | 日 |
rand_time | 時刻 |
rand_mail | メール |
rand_boolean | Boolean |
rand_realText(int digit) | ランダムな文字列 |
rand_company | 会社名 |
rand_city | 市 |
rand_postcode | 郵便番号 |
rand_streetAddress | 番地 |
rand_latitude | 緯度 |
rand_longitude | 経度 |
rand_password | パスワード |
rand_phoneNumber | 携帯番号 or 家の電話 |
rand_url | URL |
rand_ipv4 | IPアドレス |
rand_isbn10 | International Standard Book Number(10) |
rand_isbn13 | International Standard Book Number(13) |
rand_creditCardNumber | クレジットカード |
increment_id | repeatCountを指定した時に連番のIDが出力されます |
rand_numberBetween(int,int) | 引数に指定した範囲からランダムな数字を返します |
rand_randomFloat(少数桁数, 最小値, 最大値) | ランダムな浮動小数点数を一つ返す |
rand_randomElement(A,...B) | 引数に指定した値からランダムで一つ返す |
Created by araiyusuke