{"id":13824813,"url":"https://github.com/necomori/php-api-mockserver","last_synced_at":"2025-07-08T20:32:17.560Z","repository":{"id":142116574,"uuid":"103018623","full_name":"necomori/php-api-mockserver","owner":"necomori","description":"Mock Server for REST API","archived":false,"fork":false,"pushed_at":"2017-09-10T10:28:30.000Z","size":799,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-20T03:31:52.109Z","etag":null,"topics":["cakephp3","mock-server"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/necomori.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-10T09:44:06.000Z","updated_at":"2024-09-22T01:42:56.000Z","dependencies_parsed_at":"2023-04-22T14:09:09.425Z","dependency_job_id":null,"html_url":"https://github.com/necomori/php-api-mockserver","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/necomori/php-api-mockserver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/necomori%2Fphp-api-mockserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/necomori%2Fphp-api-mockserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/necomori%2Fphp-api-mockserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/necomori%2Fphp-api-mockserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/necomori","download_url":"https://codeload.github.com/necomori/php-api-mockserver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/necomori%2Fphp-api-mockserver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264343707,"owners_count":23593775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cakephp3","mock-server"],"created_at":"2024-08-04T09:01:09.804Z","updated_at":"2025-07-08T20:32:15.419Z","avatar_url":"https://github.com/necomori.png","language":"PHP","readme":"# PHP API MockServer\n\nREST API の Mock サーバーを気軽に立てるための仕組みです。\n\n以下のような役割があります。\n\n- 管理ツール経由でAPIのリソースを登録しておけば、API Mock として使用できる\n  - 例えば、`/v1/users` というリソースを `GET` でアクセスした際のレスポンスを管理ツールで登録しておけば、`GET /v1/users` でアクセスすると、登録したレスポンスが返却される\n- API Mock のリソースを REST API 経由で登録することができるので、API アクセスが必要な機能に対する UnitTest 等で利用できる\n  - REST API 経由で Mock リソースを追加するためのパッケージは別途準備中(php-api-mock というパッケージになる予定)\n\n## インストール方法\n\n### homebrew 等を使ってローカル環境で実行\n\ngithub からソースをダウンロードし、composer で必要なパッケージを取得、設定ファイルをコピーする\n\n```sh\n% git clone git@github.com:necomori/php-api-mockserver\n% cd php-api-mockserver\n% composer install\n% cp config/.env.default config/.env\n```\n\n`config/.env` の 14 行目 `export SECURITY_SALT=\"__SALT__\"` の `__SALT__` 部分を編集する。\n\n### Docker for Mac を利用する\n\ngithub からソースをダウンロードし、composer で必要なパッケージを取得、設定ファイルをコピーする(初回は、Docker image の build が実行されるが、2回目以降は build 済みイメージを利用するので起動は早くなる)\n\n```sh\n% git clone git@github.com:necomori/php-api-mockserver\n% cd php-api-mockserver\n% docker-composer up -d\n% docker exec -it web composer install\n% cp config/.env.default config/.env\n```\n\n`config/.env` の 14 行目 `export SECURITY_SALT=\"__SALT__\"` の `__SALT__` 部分を編集する。\n\n## 管理ツールの実行方法\n\n### homebrew 等を使ってローカル環境で実行\n\n以下のコマンドでサーバーを起動する。\n\n```sh\n% cd php-api-mockserver\n% bin/cake server -H 0.0.0.0\n```\n\n`http://localhost:8756/resources` にアクセスすると、リソース管理画面が表示されるので、Mockアクセスで必要なリソースを追加/編集を行う\n\n（注意) サーバーは、上記のコマンドを Ctrl+ c で終了すれば停止する\n\n### Docker for Mac を利用する\n\n以下のコマンドで Docker 環境を起動する。\n\n```sh\n% cd php-api-mockserver\n% docker-compose up -d\n```\n\n`http://localhost:8756/resources` にアクセスすると、リソース管理画面が表示されるので、Mockアクセスで必要なリソースを追加/編集を行う\n\n(注意）Docker 環境は `docker-compose down` コマンドを実行すれば終了する\n\n## REST API経由のリソース追加\n\n上記の方法でサーバーを起動しておいて、以下の REST API 経由でリソースの編集が可能。\n\n|メソッド|リソース|動作|\n|---|---|---|\n|GET|/mocks|登録済みの Mock リソースの一覧を返却|\n|GET|/mocks/:id|指定した id の Mock リソースを返却|\n|POST|/mocks|新しい Mock リソースを追加|\n|PUT(PATCH)|/mocks/:id|指定した id の Mock リソースを更新|\n|DELETE|/mocks/:id|指定した id の Mock リソースを削除|\n\n## 登録した Mock リソースのアクセス方法(1)\n\n管理ツールもしくは REST API 経由で登録した Mock リソースは、登録した URL にアクセスすれば、ダミーのレスポンスを返却する。\n\n例えば、以下のような Mock リソースを登録した場合、`http://localhost:8756/v1/users` に GET メソッドでアクセスすれば、`{\"message\":\"OK\"}` が返却される。（HTTP のステータスコードは 200 になる)\n\n|項目|値|\n|---|---|\n|URL|/v1/users|\n|Request Method|GET|\n|Response|{\"code\":200,\"body\":{\"message\":\"OK\"}|\n\n## 登録した Mock リソースのアクセス方法(2)\n\nMock リソースに対して、複数のレスポンスを登録しておくと、1回目は 200 OK だが、2回目のアクセス時には 500 Error を返すということが可能。\n\n例えば、以下のような Mock リソースを登録した場合、`http://localhost:8756/v1/users` に GET メソッドでアクセスすれば、1回目は `{\"message\":\"OK\"}` が返却が、2回目は `{\"message\":\"Error\"}` が返却される。\n\n|項目|値|\n|---|---|\n|URL|/v1/users|\n|Request Method|GET|\n|Response|[{\"code\":200,\"body\":{\"message\":\"OK\"}}, {\"code\":500,\"body\":{\"message\":\"Error\"}}]|\n","funding_links":[],"categories":["PHP"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnecomori%2Fphp-api-mockserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnecomori%2Fphp-api-mockserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnecomori%2Fphp-api-mockserver/lists"}