PHPackages                             araiyusuke/laravel-fake-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. araiyusuke/laravel-fake-api

ActiveLibrary[API Development](/categories/api)

araiyusuke/laravel-fake-api
===========================

laravel fake api

v1.0.1(3y ago)08[1 issues](https://github.com/araiyusuke/laravel-fake-api/issues)MITPHP

Since Jun 15Pushed 3y ago1 watchersCompare

[ Source](https://github.com/araiyusuke/laravel-fake-api)[ Packagist](https://packagist.org/packages/araiyusuke/laravel-fake-api)[ RSS](/packages/araiyusuke-laravel-fake-api/feed)WikiDiscussions develop Synced 1mo ago

READMEChangelogDependenciesVersions (4)Used By (0)

laravel-fake-api
================

[](#laravel-fake-api)

yml形式のファイルを使ってLaravelにAPIのモック環境を構築するライブラリ
-----------------------------------------

[](#yml形式のファイルを使ってlaravelにapiのモック環境を構築するライブラリ)

- Fakerのメソッドを使ってランダムな値を返せます。
- レイアウト機能を使えば共通のレイアウトを返すことができます。
- LaravelのValidationルールが使えます。
- authをtrueにすることでBearer認証を有効にできます。
- repeatCountを指定すれば連続の値を出力できます。

### LaravelのRoute定義ファイルで初期化してください。

[](#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-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を使えば、同じメソッド名で異なるランダムな値を返すことができます

[](#suffixを使えば同じメソッド名で異なるランダムな値を返すことができます)

メソッド名\_1, メソッド名\_2, メソッド名\_3

### Generators Method

[](#generators-method)

method namerandom valuerand\_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\_booleanBooleanrand\_realText(int digit)ランダムな文字列rand\_company会社名rand\_city市rand\_postcode郵便番号rand\_streetAddress番地rand\_latitude緯度rand\_longitude経度rand\_passwordパスワードrand\_phoneNumber携帯番号 or 家の電話rand\_urlURLrand\_ipv4IPアドレスrand\_isbn10International Standard Book Number(10)rand\_isbn13International Standard Book Number(13)rand\_creditCardNumberクレジットカードincrement\_idrepeatCountを指定した時に連番のIDが出力されますrand\_numberBetween(int,int)引数に指定した範囲からランダムな数字を返しますrand\_randomFloat(少数桁数, 最小値, 最大値)ランダムな浮動小数点数を一つ返すrand\_randomElement(A,...B)引数に指定した値からランダムで一つ返すCreated by araiyusuke

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

2

Last Release

1426d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/19ea696d6172de9311ad0fef6160fd9d72fff69246798a7692e164a10cd1314c?d=identicon)[araiyusuke](/maintainers/araiyusuke)

---

Top Contributors

[![araiyusuke](https://avatars.githubusercontent.com/u/1781289?v=4)](https://github.com/araiyusuke "araiyusuke (72 commits)")

### Embed Badge

![Health badge](/badges/araiyusuke-laravel-fake-api/health.svg)

```
[![Health](https://phpackages.com/badges/araiyusuke-laravel-fake-api/health.svg)](https://phpackages.com/packages/araiyusuke-laravel-fake-api)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M187](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M454](/packages/google-gax)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
