LaravelでAPIを実装【難しいところは省きました】

やることはこちらの通り。

    ・ APIのURLの作成
    ・ プログラム(API)の作成

今回の記事はLaravelのこともそうですが、APIについても初学者向けに作ってます。
　
Laravelの環境構築については、__Laravel 環境構築 mac__と調べれば記事がたくさん出てきますので、そちらを見てもらえればと思います。


### APIのURLの作成

作成したLaravelのプロジェクトをVSコードなどで開いてみると、プロジェクトName/routesにapi.phpと書かれたクラスがあります。

そこに新しくURLを作成していきます。

    <?php

    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Route;

    /*
    |--------------------------------------------------------------------------
    | API Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register API routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | is assigned the "api" middleware group. Enjoy building your API!
    |
    */

    Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
        return $request->user();
    });

    // 下記を追加
    Route::get('test', 'App\Http\Controllers\TestAPIController@sample');

今回は http://127.0.0.1:8000/api/test をAPIのURLとして作成しています。

本当はこのURLについてももっと説明したいところですが、とりあえず難しいことは省いて書きます。

### プログラム(API)の作成

__プロジェクトName/app/Http/Controllers__というディレクトリがあります。
その中に__TestAPIController.phpクラスを作成__してください。

作成したら下記のソースを貼り付けてください。

    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    class TestAPIController extends Controller
    {
       // sampleアクションを定義
       public function sample()
       {
           return 'テストです';
       }

    }

以上で作成するプログラムはこれで終了です。
すごく単純ですが、テストですという文字列を返してくれるAPIができました。

### URLの確認

こちらのコマンドを叩きます。

     Macbook:YourApp name$ php artisan route:list

するとこんな感じで返ってきます。

     Macbook:YourApp name$ php artisan route:list
        +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+
        | Domain | Method   | URI                 | Name | Action                                                     | Middleware                               |
        +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+
        |        | GET|HEAD | /                   |      | Closure                                                    | web                                      |
        |        | GET|HEAD | api/test            |      | App\Http\Controllers\TestAPIController@sample              | api                                      |
        |        | GET|HEAD | api/user            |      | Closure                                                    | api                                      |
        |        |          |                     |      |                                                            | App\Http\Middleware\Authenticate:sanctum |
        |        | GET|HEAD | sanctum/csrf-cookie |      | Laravel\Sanctum\Http\Controllers\CsrfCookieController@show | web                                      |
        +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+

api/testというURLがあれば正常です。

api/testがない場合は書いたソースを保存してないとか、書く場所を間違えてるとかそんな感じだと思います。
その場合はapi/testを除いたものだけ表示されます。下記のような感じ。

     Macbook:YourApp name$ php artisan route:list
        +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+
        | Domain | Method   | URI                 | Name | Action                                                     | Middleware                               |
        +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+
        |        | GET|HEAD | /                   |      | Closure                                                    | web                                      |
        |        | GET|HEAD | api/user            |      | Closure                                                    | api                                      |
        |        |          |                     |      |                                                            | App\Http\Middleware\Authenticate:sanctum |
        |        | GET|HEAD | sanctum/csrf-cookie |      | Laravel\Sanctum\Http\Controllers\CsrfCookieController@show | web                                      |
        +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+
### サーバの起動とAPIをコマンドで叩く

できたらターミナルで下記コマンドを打ちサーバを起動します。

       Macbook:YourApp name$ php artisan serve

起動後に別のターミナルを開き下記コマンドを打ちます。

       Macbook:YourApp name$ curl 'http://127.0.0.1:8000/api/test'

するとこんな感じで帰ってくると思います。

       Macbook:YourApp name$ curl 'http://127.0.0.1:8000/api/test'
       テストです

テストですと返ってきたら今回の内容は終了です。
わからないところなどあればコメントでお願いします。