APIとリクエストボディ

株式会社WOWNエンジニアチームです。

前回の内容は、コントローラのコードを簡単に作成するものでした。
「通し番号が123番のユーザーの名前とメールアドレスを返す」というだけの簡単な内容です

use App\Models\User;

public function getUserInfo() 
{
    $user = User::find('123');

    return [ 
        $user->name, 
        $user->email 
    ]; 
}

この内容では、あまり役にたつプログラムとは言えません。

というのも、誰がどんなタイミングでどう使っても、必ず123番のユーザーの名前とメールアドレスしか表示しません。123番という番号も一例のために適当に出した数値ですので、そもそも通し番号が123番のユーザーがデータベースいなければエラーが発生して動作すらしません。

 

コントローラとリクエスト

このプログラムを改良するにはどうなればいいのでしょうか?
任意の番号のユーザー情報を検索できるようになればよさそうです。ここで、「リクエスト」という機能の出番です。
以下のようにコントローラの内容を修正します。

use Illuminate\Http\Request;
use App\Models\User;

public function getUserInfo(Request $request)
{
    $user = User::find($request->user_id);

    return [
        $user->name,
        $user->email
    ];
}
コントローラの機能にリクエストを組み込み、引数に(Request $request)という記述が追加されました。
また、ユーザーデータの検索部分にも「$request->user_id」が使用されるようになりました。
さて、ではこの$requestとは何なのでしょうか?

APIとリクエスト

Reactページ(ビューファイル)からコントローラにアクセスする時の流れを覚えていますか?APIエンドポイントを作成して、Reactページの中でAPIからアクセスしていましたね。
export default function CountButton() {
    return (
        <button onClick={() => post('/api/system/user/show')}>
            クリック
        </button>
    );
}
このような形式でした。
リクエストを使う時は、このAPI呼び出しに少し内容が追加されます。
export default function CountButton() {
    return (
        <button onClick={() => post('/api/system/user/show', {user_id:"1123"})}>
            クリック
        </button>
    );
}
{}で囲った部分が追加されました。
これは何をしているのかというと、APIにリクエストボディ(リクエストの内容)というものを追加しています。
レストランで例えると注文内容を書いた紙のようなもので、今回の注文内容には「user_idは1123番である」と書かれています。
このリクエストボディが、コントローラの内部で$requestとして扱われています。この機能はLaravelが用意した「サービス」という仕組みで、特に難しい導入や構造の理解をしなくても、このような簡単な記述でリクエストの機能を利用できます。ありがたいですね。
あとはリクエストボディの内容を、Reactページ内で操作する仕組みを作るだけです。テキストボックスを用意して入力した数値がリクエストの内容になるなどすれば、好きな通し番号での検索が出来上がります。Reactの「ステート」の話の発展系になりますね。
リクエストの話はもう少し続きます。

WEB制作・ITに関するお悩みや
ご質問等お気軽にご相談ください

contact

この記事の著者

コメントする

関連記事