LaradockでAPIサーバーとして使うLaravel 8.xを立ち上げるメモ
はじめに
経緯
vuetify v2の環境をDockerで気軽に作るの記事で、vuetifyとLaravelで作成したAPIサーバーと連携する環境について書きましたが、今回はAPIサーバー側のお話。
今まで自身が利用していたLaravelは、LTSの6系のバージョンです。
上記のリリースノートのとおり、バッグフィックス期限もあと少し、セキュリティフィックス期限までは残り1年を切りました。
次期LTSのバージョン9がリリースされたらそちらに飛びつくのですが、今のうちにLaravelの現最新バージョンにも触れておいた方が良いと思っています。
そう、この記事は、自身がLaravelのAPIサーバーで利用しているV.6系のポイントを、知見の整理がてらV.8系で動作検証しようという試みの、「メモ」です。
例のごとく、メモと言いつつも、誰かに話しかけるような文体になっていますが、未来の自分に話しかけています。ご了承のほど…
前提
環境や使うツールは以下のとおり
環境
- Windows 10 Pro 64bit
- Docker Desktop for Windows (on Hyper-V), Version 3.6.0
使っているツールなど
-
Laradock
参考:https://laradock.io/
Laradockは、Dockerを利用してPHP開発環境一式を簡単に構築できる仕組みです。
Laravel専用環境かと思いきや、実はLaravel関係ないようです。
Laradockを工夫しながら使おうとあれこれ試していると、うすうす感じることなのですが、本当に関係ないことを知ると戸惑います(名前的に)。
それでも、単純に自作する必要がないので便利に使わせてもらっています。 -
REST Client:Insomnia
参考:https://insomnia.rest/
とても便利なRESTクライアントです。プロジェクトごとにワークスペース的なものを分けられたり、APIキーを環境変数で設定できたり、直感的に操作できたりで、今まで使ってきたRESTクライアントと違って、不満に思う箇所がないのではないか、というくらいです。
この感動を記事に、、、と思ったのですが、すでに良記事がありました。すばらしいです。
https://qiita.com/akkino_D-En/items/57fa3d27abea2033c44b -
Git Bash (Git for Windows)
参考:https://gitforwindows.org/
手順概要
大まかな流れは以下のとおり
- Laradockのインストール
- Laravelプロジェクト作成
- Laravelのためのnginx設定
- Laravelプロジェクトの動作確認
補足
今回は、Dockerの環境がすでに存在することを前提として、Laradockのインストールするところからの手順を記載しています。
Laradockのインストールは、ネット上に多数の知見が転がっているので、詳しい手順はそちらを参照していただくのが良いかと。
作業手順
(1) Laradockのインストール
以下、Git Bash で操作していきます。
-
リポジトリからLaradock一式をclone
公式の解説はこちらworkspace$ git clone https://github.com/laradock/laradock.git Cloning into 'laradock'... remote: Enumerating objects: 13039, done. remote: Counting objects: 100% (121/121), done. remote: Compressing objects: 100% (74/74), done. remote: Total 13039 (delta 61), reused 83 (delta 38), pack-reused 12918 Receiving objects: 100% (13039/13039), 12.43 MiB | 8.00 MiB/s, done. Resolving deltas: 100% (7100/7100), done. workspace$
-
Laradockの設定ファイルを設置
参考設定ファイルがあるのでそれをコピーして設定ファイルを設置します。workspace$ cd laradock/ workspace/laradock (master)$ cp .env.example .env
参考設定ファイルのままでも動作確認可能ですが、設定変更を行う場合、このタイミングがベターです。
例えば、各コンテナのユーザーとパスワードなど、変更しておいた方が良いかもしれません。
以下、いくつか参考を記載します。- PHPバージョンを変更する(任意)
workspace/laradock (master)$ grep PHP_VERSION .env PHP_VERSION=7.3 ↓ PHP_VERSION=7.4
- タイムゾーンを変更する(任意)
workspace/laradock (master)$ grep WORKSPACE_TIMEZONE .env WORKSPACE_TIMEZONE=UTC ↓ WORKSPACE_TIMEZONE=Asia/Tokyo
- PHPバージョンを変更する(任意)
-
Laradockを起動
Laradockを起動します、おもむろに。workspace/laradock (master)$ docker-compose up -d nginx mysql : Creating network "laradock_frontend" with driver "bridge" Creating network "laradock_backend" with driver "bridge" Creating network "laradock_default" with the default driver Creating laradock_mysql_1 ... done Creating laradock_docker-in-docker_1 ... done Creating laradock_workspace_1 ... done Creating laradock_php-fpm_1 ... done Creating laradock_nginx_1 ... done
これで、WEBサーバーとphp-fpm(nginxとphpを連携する仕組み)、DBサーバー、そして環境を管理する(composerを打ったりする)workspaceコンテナが立ち上がります。それから、Dockerホストとコンテナをつなぐネットワークや、コンテナ同士をつなぐネットワークなども設置されます。つまり、Laravelを動かすためのコンテナ群が一通り稼働するのです、便利です。
-
workspaceコンテナに接続
続く作業のため、workspaceコンテナに接続します。workspace/laradock (master)$ docker-compose exec --user=laradock workspace bash laradock@e75c46668111:/var/www$
以降、主にコンテナ内での操作となります。
(2) Laravelのプロジェクト作成
続いてLaravelのプロジェクトを新規作成します。
公式ドキュメントでプロジェクト作成方法がいくつか記載されていますが、ここではComposerを利用して作成します。
-
Laravelプロジェクト作成
/var/www
に、example-app01
という名称でプロジェクトを作成します。laradock@e75c46668111:/var/www$ composer create-project laravel/laravel example-app01
- 参考:以下のようにすると、バージョンを指定して作成できます。
laradock@e75c46668111:/var/www$ composer create-project laravel/laravel example-app01 "8.*"
実際の実行イメージ
laradock@e75c46668111:/var/www$ composer create-project laravel/laravel example-app01 Creating a "laravel/laravel" project at "./example-app01" Installing laravel/laravel (v8.6.2) - Installing laravel/laravel (v8.6.2): Extracting archive Created project in /var/www/example-app01 > @php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Updating dependencies Lock file operations: 106 installs, 0 updates, 0 removals - Locking asm89/stack-cors (v2.0.3) - Locking brick/math (0.9.3) - Locking doctrine/inflector (2.0.3) - Locking doctrine/instantiator (1.4.0) - Locking doctrine/lexer (1.2.1) - Locking dragonmantank/cron-expression (v3.1.0) - Locking egulias/email-validator (2.1.25) - Locking facade/flare-client-php (1.9.1) - Locking facade/ignition (2.13.1) - Locking facade/ignition-contracts (1.0.2) - Locking fakerphp/faker (v1.16.0) - Locking filp/whoops (2.14.1) - Locking fruitcake/laravel-cors (v2.0.4) - Locking graham-campbell/result-type (v1.0.2) - Locking guzzlehttp/guzzle (7.3.0) - Locking guzzlehttp/promises (1.4.1) - Locking guzzlehttp/psr7 (2.0.0) - Locking hamcrest/hamcrest-php (v2.0.1) - Locking laravel/framework (v8.61.0) - Locking laravel/sail (v1.10.1) - Locking laravel/sanctum (v2.11.2) - Locking laravel/tinker (v2.6.1) - Locking league/commonmark (1.6.6) - Locking league/flysystem (1.1.5) - Locking league/mime-type-detection (1.7.0) - Locking mockery/mockery (1.4.4) - Locking monolog/monolog (2.3.4) - Locking myclabs/deep-copy (1.10.2) - Locking nesbot/carbon (2.53.1) - Locking nikic/php-parser (v4.12.0) - Locking nunomaduro/collision (v5.9.0) - Locking opis/closure (3.6.2) - Locking phar-io/manifest (2.0.3) - Locking phar-io/version (3.1.0) - Locking phpdocumentor/reflection-common (2.2.0) - Locking phpdocumentor/reflection-docblock (5.2.2) - Locking phpdocumentor/type-resolver (1.4.0) - Locking phpoption/phpoption (1.8.0) - Locking phpspec/prophecy (1.14.0) - Locking phpunit/php-code-coverage (9.2.6) - Locking phpunit/php-file-iterator (3.0.5) - Locking phpunit/php-invoker (3.1.1) - Locking phpunit/php-text-template (2.0.4) - Locking phpunit/php-timer (5.0.3) - Locking phpunit/phpunit (9.5.9) - Locking psr/container (1.1.1) - Locking psr/event-dispatcher (1.0.0) - Locking psr/http-client (1.0.1) - Locking psr/http-factory (1.0.1) - Locking psr/http-message (1.0.1) - Locking psr/log (1.1.4) - Locking psr/simple-cache (1.0.1) - Locking psy/psysh (v0.10.8) - Locking ralouphie/getallheaders (3.0.3) - Locking ramsey/collection (1.2.1) - Locking ramsey/uuid (4.2.1) - Locking sebastian/cli-parser (1.0.1) - Locking sebastian/code-unit (1.0.8) - Locking sebastian/code-unit-reverse-lookup (2.0.3) - Locking sebastian/comparator (4.0.6) - Locking sebastian/complexity (2.0.2) - Locking sebastian/diff (4.0.4) - Locking sebastian/environment (5.1.3) - Locking sebastian/exporter (4.0.3) - Locking sebastian/global-state (5.0.3) - Locking sebastian/lines-of-code (1.0.3) - Locking sebastian/object-enumerator (4.0.4) - Locking sebastian/object-reflector (2.0.4) - Locking sebastian/recursion-context (4.0.4) - Locking sebastian/resource-operations (3.0.3) - Locking sebastian/type (2.3.4) - Locking sebastian/version (3.0.2) - Locking swiftmailer/swiftmailer (v6.2.7) - Locking symfony/console (v5.3.7) - Locking symfony/css-selector (v5.3.4) - Locking symfony/deprecation-contracts (v2.4.0) - Locking symfony/error-handler (v5.3.7) - Locking symfony/event-dispatcher (v5.3.7) - Locking symfony/event-dispatcher-contracts (v2.4.0) - Locking symfony/finder (v5.3.7) - Locking symfony/http-client-contracts (v2.4.0) - Locking symfony/http-foundation (v5.3.7) - Locking symfony/http-kernel (v5.3.7) - Locking symfony/mime (v5.3.7) - Locking symfony/polyfill-ctype (v1.23.0) - Locking symfony/polyfill-iconv (v1.23.0) - Locking symfony/polyfill-intl-grapheme (v1.23.1) - Locking symfony/polyfill-intl-idn (v1.23.0) - Locking symfony/polyfill-intl-normalizer (v1.23.0) - Locking symfony/polyfill-mbstring (v1.23.1) - Locking symfony/polyfill-php72 (v1.23.0) - Locking symfony/polyfill-php73 (v1.23.0) - Locking symfony/polyfill-php80 (v1.23.1) - Locking symfony/polyfill-php81 (v1.23.0) - Locking symfony/process (v5.3.7) - Locking symfony/routing (v5.3.7) - Locking symfony/service-contracts (v2.4.0) - Locking symfony/string (v5.3.7) - Locking symfony/translation (v5.3.7) - Locking symfony/translation-contracts (v2.4.0) - Locking symfony/var-dumper (v5.3.7) - Locking theseer/tokenizer (1.2.1) - Locking tijsverkoyen/css-to-inline-styles (2.2.3) - Locking vlucas/phpdotenv (v5.3.0) - Locking voku/portable-ascii (1.5.6) - Locking webmozart/assert (1.10.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 106 installs, 0 updates, 0 removals - Installing doctrine/inflector (2.0.3): Extracting archive - Installing doctrine/lexer (1.2.1): Extracting archive - Installing symfony/polyfill-ctype (v1.23.0): Extracting archive - Installing webmozart/assert (1.10.0): Extracting archive - Installing dragonmantank/cron-expression (v3.1.0): Extracting archive - Installing symfony/polyfill-php80 (v1.23.1): Extracting archive - Installing symfony/polyfill-mbstring (v1.23.1): Extracting archive - Installing symfony/var-dumper (v5.3.7): Extracting archive - Installing symfony/polyfill-intl-normalizer (v1.23.0): Extracting archive - Installing symfony/polyfill-intl-grapheme (v1.23.1): Extracting archive - Installing symfony/string (v5.3.7): Extracting archive - Installing psr/container (1.1.1): Extracting archive - Installing symfony/service-contracts (v2.4.0): Extracting archive - Installing symfony/polyfill-php73 (v1.23.0): Extracting archive - Installing symfony/deprecation-contracts (v2.4.0): Extracting archive - Installing symfony/console (v5.3.7): Extracting archive - Installing psr/log (1.1.4): Extracting archive - Installing monolog/monolog (2.3.4): Extracting archive - Installing voku/portable-ascii (1.5.6): Extracting archive - Installing phpoption/phpoption (1.8.0): Extracting archive - Installing graham-campbell/result-type (v1.0.2): Extracting archive - Installing vlucas/phpdotenv (v5.3.0): Extracting archive - Installing symfony/css-selector (v5.3.4): Extracting archive - Installing tijsverkoyen/css-to-inline-styles (2.2.3): Extracting archive - Installing symfony/routing (v5.3.7): Extracting archive - Installing symfony/process (v5.3.7): Extracting archive - Installing symfony/polyfill-php72 (v1.23.0): Extracting archive - Installing symfony/polyfill-intl-idn (v1.23.0): Extracting archive - Installing symfony/mime (v5.3.7): Extracting archive - Installing symfony/http-foundation (v5.3.7): Extracting archive - Installing symfony/http-client-contracts (v2.4.0): Extracting archive - Installing psr/event-dispatcher (1.0.0): Extracting archive - Installing symfony/event-dispatcher-contracts (v2.4.0): Extracting archive - Installing symfony/event-dispatcher (v5.3.7): Extracting archive - Installing symfony/error-handler (v5.3.7): Extracting archive - Installing symfony/http-kernel (v5.3.7): Extracting archive - Installing symfony/finder (v5.3.7): Extracting archive - Installing symfony/polyfill-iconv (v1.23.0): Extracting archive - Installing egulias/email-validator (2.1.25): Extracting archive - Installing swiftmailer/swiftmailer (v6.2.7): Extracting archive - Installing symfony/polyfill-php81 (v1.23.0): Extracting archive - Installing ramsey/collection (1.2.1): Extracting archive - Installing brick/math (0.9.3): Extracting archive - Installing ramsey/uuid (4.2.1): Extracting archive - Installing psr/simple-cache (1.0.1): Extracting archive - Installing opis/closure (3.6.2): Extracting archive - Installing symfony/translation-contracts (v2.4.0): Extracting archive - Installing symfony/translation (v5.3.7): Extracting archive - Installing nesbot/carbon (2.53.1): Extracting archive - Installing league/mime-type-detection (1.7.0): Extracting archive - Installing league/flysystem (1.1.5): Extracting archive - Installing league/commonmark (1.6.6): Extracting archive - Installing laravel/framework (v8.61.0): Extracting archive - Installing facade/ignition-contracts (1.0.2): Extracting archive - Installing facade/flare-client-php (1.9.1): Extracting archive - Installing facade/ignition (2.13.1): Extracting archive - Installing fakerphp/faker (v1.16.0): Extracting archive - Installing asm89/stack-cors (v2.0.3): Extracting archive - Installing fruitcake/laravel-cors (v2.0.4): Extracting archive - Installing psr/http-message (1.0.1): Extracting archive - Installing psr/http-client (1.0.1): Extracting archive - Installing ralouphie/getallheaders (3.0.3): Extracting archive - Installing psr/http-factory (1.0.1): Extracting archive - Installing guzzlehttp/psr7 (2.0.0): Extracting archive - Installing guzzlehttp/promises (1.4.1): Extracting archive - Installing guzzlehttp/guzzle (7.3.0): Extracting archive - Installing laravel/sail (v1.10.1): Extracting archive - Installing laravel/sanctum (v2.11.2): Extracting archive - Installing nikic/php-parser (v4.12.0): Extracting archive - Installing psy/psysh (v0.10.8): Extracting archive - Installing laravel/tinker (v2.6.1): Extracting archive - Installing hamcrest/hamcrest-php (v2.0.1): Extracting archive - Installing mockery/mockery (1.4.4): Extracting archive - Installing filp/whoops (2.14.1): Extracting archive - Installing nunomaduro/collision (v5.9.0): Extracting archive - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive - Installing phpdocumentor/type-resolver (1.4.0): Extracting archive - Installing phpdocumentor/reflection-docblock (5.2.2): Extracting archive - Installing sebastian/version (3.0.2): Extracting archive - Installing sebastian/type (2.3.4): Extracting archive - Installing sebastian/resource-operations (3.0.3): Extracting archive - Installing sebastian/recursion-context (4.0.4): Extracting archive - Installing sebastian/object-reflector (2.0.4): Extracting archive - Installing sebastian/object-enumerator (4.0.4): Extracting archive - Installing sebastian/global-state (5.0.3): Extracting archive - Installing sebastian/exporter (4.0.3): Extracting archive - Installing sebastian/environment (5.1.3): Extracting archive - Installing sebastian/diff (4.0.4): Extracting archive - Installing sebastian/comparator (4.0.6): Extracting archive - Installing sebastian/code-unit (1.0.8): Extracting archive - Installing sebastian/cli-parser (1.0.1): Extracting archive - Installing phpunit/php-timer (5.0.3): Extracting archive - Installing phpunit/php-text-template (2.0.4): Extracting archive - Installing phpunit/php-invoker (3.1.1): Extracting archive - Installing phpunit/php-file-iterator (3.0.5): Extracting archive - Installing theseer/tokenizer (1.2.1): Extracting archive - Installing sebastian/lines-of-code (1.0.3): Extracting archive - Installing sebastian/complexity (2.0.2): Extracting archive - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive - Installing phpunit/php-code-coverage (9.2.6): Extracting archive - Installing doctrine/instantiator (1.4.0): Extracting archive - Installing phpspec/prophecy (1.14.0): Extracting archive - Installing phar-io/version (3.1.0): Extracting archive - Installing phar-io/manifest (2.0.3): Extracting archive - Installing myclabs/deep-copy (1.10.2): Extracting archive - Installing phpunit/phpunit (9.5.9): Extracting archive 63 package suggestions were added by new dependencies, use `composer suggest` to see details. Package sebastian/resource-operations is abandoned, you should avoid using it. No replacement was suggested. Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: facade/ignition Discovered Package: fruitcake/laravel-cors Discovered Package: laravel/sail Discovered Package: laravel/sanctum Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully. 75 packages you are using are looking for funding. Use the `composer fund` command to find out more! > @php artisan vendor:publish --tag=laravel-assets --ansi No publishable resources for tag [laravel-assets]. Publishing complete. > @php artisan key:generate --ansi Application key set successfully. laradock@e75c46668111:/var/www$
- 参考:以下のようにすると、バージョンを指定して作成できます。
-
設定調整
Laravel 6.xでは、.envを自分でコピーし、php artisan key:generate
も自分で実行したりしましたが、Laravel 8.xでは自動ですね。この記事の内容では、設定調整しなくても問題なく動作確認できるのですが、忘れないうちに最低限の設定調整をしておきます。
laradock@e75c46668111:/var/www$ cd example-app01/ laradock@e75c46668111:/var/www/example-app01$ vi .env
変更内容は以下です。
APP_URL=http://localhost ↓ APP_URL=http://localhost/app01
Laradock側でDBのパスワードを変えた場合など、必要があればそれらも変更しておきましょう。
終わったら元のディレクトリへ
laradock@e75c46668111:/var/www/example-app01$ cd .. laradock@e75c46668111:/var/www$
(3) Laravelのためのnginx設定
先ほど作成したLaravelプロジェクトをブラウザから閲覧できるようにするためのnginxの設定を行います。
簡単な設定について
簡単な設定としては、nginxの公開ディレクトリ(rootディレクティブ)を、Laravelプロジェクトのpublicディレクトリに設定すれば良いです。
root /var/www/example-app01/public;
この場合、ブラウザでhttp://localhost/
にアクセスすることで、Laravelプロジェクトに閲覧できるようになります。
ここで行う設定について
ただし、前述の構成だと、別のLaravelプロジェクトを追加した場合に、公開するLaravelプロジェクトを都度切り替える必要が出てきます。
あまりないシチュエーションかもしれませんが、気軽にプロジェクトを作成し、いつでも閲覧可能な状態を維持するため、ここではLaravelプロジェクトをサブディレクトリ配下に設置する構成を組みます。
具体的には、nginxの公開ディレクトリに、各Laravelプロジェクトのpublicディレクトリへのシンボリックリンクを設置し、nginxに必要な設定を行います。
これにより、ブラウザでhttp://localhost/app01/
にアクセスすることで、Laravelプロジェクトに閲覧できるようにします。
設定手順
-
Laravelプロジェクト公開ディレクトリの準備
nginxの公開ディレクトリを作成し、そこにLaravelプロジェクトの公開ディレクトリへのシンボリックリンクを作成します。laradock@e75c46668111:/var/www$ mkdir public laradock@e75c46668111:/var/www$ cd public/ laradock@e75c46668111:/var/www/public$ ln -s ../example-app01/public/ app01 laradock@e75c46668111:/var/www/public$ ls -l total 2 lrwxr-xr-x 1 laradock laradock 1067 Sep 16 13:37 app01 -> ../example-app01/public/ laradock@e75c46668111:/var/www/public$ cd /var/www laradock@e75c46668111:/var/www$
-
nginxのdefault.conf設定ファイルの修正
default.confのLaravelの設定をサブディレクトリの構成に変更します。laradock@e75c46668111:/var/www$ cd laradock/nginx/sites/ laradock@e75c46668111:/var/www$ cp -p default.conf default.conf.org laradock@e75c46668111:/var/www$ vi default.conf
変更内容は以下です。
laradock@e75c46668111:/var/www/laradock/nginx/sites$ diff -u2 default.conf.org default.conf --- default.conf.org 2021-09-16 13:07:44.183087200 +0900 +++ default.conf 2021-09-16 14:18:24.855682700 +0900 @@ -14,7 +14,10 @@ index index.php index.html index.htm; location / { - try_files $uri $uri/ /index.php$is_args$args; + return 403; + } + location /app01/ { + try_files $uri $uri/ /app01/index.php$is_args$args; } location ~ \.php$ {
変更後のdefault.conf 一部抜粋
<前略> location / { return 403; } location /app01/ { try_files $uri $uri/ /app01/index.php$is_args$args; } <後略>
-
dockerホスト側からnginxを再起動
設定を反映するため、nginxを再起動します。コンテナ内部からではなく、dockerホスト側で再起動コマンドを実行します。workspace/laradock (master)$ docker-compose restart nginx
これで、nginxの設定は完了です。
(4) Laravelプロジェクトの動作確認
さて、公開したLaravelプロジェクトの動作確認をしていきます。
-
Laravelのwelcome画面が表示されるか
まずは、Laravelプロジェクトのリソースを変更しないままアクセスしてみます。ブラウザで以下のURLにアクセスします。
http://localhost/app01/
以下のようなロゴ・タイトルの画面、すなわちWelcome画面が表示されれば、公開ディレクトリの設定は問題ありません。
-
LaravelのWEB設定の動作確認
前述のようにWelcome画面が表示されたとしても、まだLaravelが正しく設置できているとは限りません。例えばdefault.confの try_files がコメントアウトされていても、
http://localhost/app01/
でWelcome画面は表示されます。location /app01/ { # try_files $uri $uri/ /app01/index.php$is_args$args; }
※実際に試す場合には、
docker-compose restart nginx
をお忘れなきようそこで、example-app01プロジェクトのWEBルート設定に動作確認用の定義を記載し、ブラウザからアクセスして確認します。
WEBルート設定は、以下のファイルです。
/var/www/example-app01/routes/web.php
こちらに以下を追記します。Route::get('/test', function () { return view('welcome'); });
ブラウザで以下のURLにアクセスします。
http://localhost/app01/test/
先ほどのWelcome画面が表示されればOKです。
-
LaravelのAPI設定の動作確認用定義
ここまでの確認ができていれば、基本的な設定に問題はないと思います。
最後に、APIの動作確認をしますが、APIにアクセスするためのURIさえ分かれば問題なく確認できると思います。WEB設定と同様に、APIルート設定に動作確認用の定義を記載します。
APIルート設定は、web.phpと同じディレクトリにあるapi.phpファイルです。
/var/www/example-app01/routes/api.php
こちらに以下を追記します。Route::get('/test', function () { return response()->json(['message' => 'test'], 200); });
-
LaravelのAPI設定の動作確認
ブラウザでも動作確認できますが、せっかくなのでRESTクライアントで動作確認します。
(面倒な方はブラウザでhttp://localhost/app01/api/test/
にアクセスして、以下の7のJSONデータが表示されればOKです)ここでは、RESTクライアントの Insomnia を利用して確認します。
- ダッシュボードで、「Create」をクリックし、「Request Collection」をクリック、「Example App01」など適当に名前を入力して「Create」をクリックする。
- 作成したCollectionをクリックして開く
- 左側のペインの(+)アイコンをクリックしてメニューを開き、「New Request」をクリックする。
- 適切なNameで、GETのRequestをCreateする。
- 中央のペインのURL入力欄に、
http://localhost/app01/api/test/
を入力する。 - URL右側の「Send」をクリックして実行し、右側のペインの実行結果を確認する。
- 以下のJSONデータが表示されればOKです。
{ "message": "test" }
今回はここまでです。おつかれさまでした。
Discussion