LaravelでAPIバリデーションを実装する方法を完全解説(FormRequest入門)
生徒
「LaravelでAPIを作ってみたんですが、変なデータでも登録できてしまいます。これって大丈夫なんでしょうか?」
先生
「そのままだと困りますね。入力内容をチェックする仕組みが必要です。Laravelではバリデーションという機能を使います。」
生徒
「バリデーションって何をするものですか?」
先生
「今回はAPI開発でよく使うFormRequestを使って、分かりやすく説明していきます。」
1. APIバリデーションとは何か
APIバリデーションとは、送られてきたデータが正しいかどうかを確認する仕組みです。たとえば、名前が空っぽだったり、数字しか入らないはずの場所に文字が入っていたりすると、後の処理で問題が起こります。
これを防ぐために、Laravelでは「この項目は必ず必要」「ここは数字だけ」といったルールをあらかじめ決めておきます。これがバリデーションです。現実世界でいうと、申込書に記入漏れがあれば受付で止められるのと同じ考え方です。
2. FormRequestクラスとは
FormRequestクラスとは、バリデーションのルールを専用のクラスとしてまとめるための仕組みです。コントローラに直接ルールを書く方法もありますが、処理が増えると読みづらくなります。
FormRequestを使うと、「入力チェック専門のノート」を一冊作るようなイメージになります。役割がはっきり分かれるため、初心者でもコードの意味を理解しやすくなります。LaravelのAPI開発では、この方法がよく使われます。
3. FormRequestクラスの作成
Laravelでは、コマンドを使ってFormRequestクラスを作成できます。作成すると、バリデーション用のルールを書く場所が用意されます。ここに「どんな条件を満たす必要があるか」を書いていきます。
ルールは文字列で指定し、「必須」「文字数」「形式」などを簡単に表現できます。難しい数学のような処理を書く必要はなく、決められた言葉を組み合わせるだけなので、プログラミング未経験の人でも安心です。
4. バリデーションルールの基本例
public function rules()
{
return [
'name' => 'required',
'age' => 'required|integer',
];
}
この例では、nameは必ず入力する、ageは必ず入力し数字でなければならない、というルールを決めています。requiredは「必須」、integerは「整数」という意味です。英単語がそのまま意味を表しているので覚えやすいのが特徴です。
5. APIでバリデーションエラーが起きたとき
APIでバリデーションに失敗すると、Laravelは自動的にエラーメッセージを返します。画面ではなく、データとしてエラー内容が返るのがAPIの特徴です。
これは、間違った入力があったことをアプリ側に正しく伝えるためです。たとえばスマホアプリでは、このエラーを受け取って「入力内容を確認してください」と表示できます。APIとアプリが連携するために、とても重要な仕組みです。
6. コントローラでの使い方
FormRequestクラスは、コントローラの引数として使います。そうすると、コントローラの処理が始まる前に、自動でバリデーションが行われます。
つまり、正しくないデータはコントローラに届く前に止められます。これにより、コントローラの中では「正しいデータが来ている前提」で処理を書けるようになります。コードがシンプルになり、ミスも減ります。
7. API開発でFormRequestを使うメリット
LaravelのAPI開発でFormRequestを使う最大のメリットは、コードの整理と安全性です。入力チェックを一か所にまとめることで、後から見返したときにも理解しやすくなります。
また、不正なデータを早い段階で防げるため、システム全体の信頼性が高まります。APIバリデーションは地味に見えますが、安心して使えるAPIを作るために欠かせない基本機能です。