コース一覧
    Node.jsバックエンド実践
    入力検証

    Node.jsバックエンド実践

    入力検証、ミドルウェア、エラー処理、データベース接続を学び、実用的なバックエンドAPIを安全に組み立てられるようにします。

    1
    リクエスト処理と検証
    01. クエリパラメータ15分
    02. 並び替えとページング15分
    03. 入力検証15分
    04. ミドルウェア15分
    05. エラーハンドリング15分
    06. つくる:検索API完成20分
    07. 第5章クイズ10分
    2
    データベース接続
    01. DBにつなぐ15分
    02. 一覧・詳細をDB化15分
    03. 出品をDB化15分
    04. SQLインジェクション20分
    05. 更新・削除をDB化15分
    06. 購入トランザクション20分
    07. つくる:DB版fleama20分
    08. 第6章クイズ10分

    入力検証

    送られてきたものを信じない

    第4章で出品の API を作りました。あのままだと、こういう商品が登録できてしまいます。

    JSON

    { "name": "", "price": "たぶん5000くらい" }

    名前が空で、価格が文字列です。保存はできますが、一覧に空欄が並び、合計金額の計算も壊れます。

    外から来るものは、正しい形とは限りません。 悪意がなくても、フォームの不具合や打ち間違いで届きます。だから受け取る側で確かめます。

    何を確かめるか

    見るべきことは、だいたい 3 つに分かれます。

    観点例
    必須名前が入っているか
    型価格が数値か
    範囲価格が 0 より大きいか

    順番も大切です。値が無いのに型を調べても意味がないので、必須から見ます。

    おかしければ400

    第4章のステータスコードで触れたとおり、送られた内容がおかしいときは 400 です。

    JavaScript

    app.post("/items", (req, res) => {
      if (!req.body.name) {
        return res.status(400).json({ error: "商品名は必須です" });
      }
      if (typeof req.body.price !== "number") {
        return res.status(400).json({ error: "価格は数値で指定してください" });
      }
      // ここから先は、正しい値だと分かっている
    });

    理由を書いて返す

    { "error": "入力が不正です" } だけでは、送った側は何を直せばよいのか分かりません。

    どこがどうおかしいのかを書いて返します。それが分かるのは、確かめた側だけだからです。フリマの出品フォームなら、その文言をそのまま画面に出せます。

    検証は入り口に集める

    検証を通ったあとの処理では、もう値を疑いません。price は数値だと決まっているので、そのまま計算できます。

    入り口で確かめ、奥では信じる。 この線引きがあると、奥の処理が読みやすくなります。逆に、あちこちで if (typeof price === "number") と書き始めたら、それは入り口の検証が足りていない印です。

    手を動かす

    演習では、出品の API に検証を足します。必須・型・範囲の 3 つを、順番に確かめてください。

    要件

    1. name が無い・空文字なら 400 で {"error":"商品名は必須です"}
    2. price が数値でなければ 400 で {"error":"価格は数値で指定してください"}
    3. price が 0 以下なら 400 で {"error":"価格は1円以上にしてください"}、すべて通れば 201 で登録

    ヒント

    登録の処理より前に、3 つの `if` を並べます

    空文字と未指定はどちらも `!req.body.name` で拾えます

    型を見るのは `typeof req.body.price !== "number"` です。文字列の "3500" も弾かれます

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/10

    関連レッスン

    • ミドルウェア

      ログ出力ミドルウェアを自作し、共通処理を挟めるようになります。

    • エラーハンドリング

      共通エラー処理で500を整形し、落ちないAPIにできるようになります。

    • つくる:検索API完成

      検索と検証を備え、フリマらしい絞り込みを完成できるようになります。

    • 第5章クイズ

      リクエスト処理と検証の理解を4択で確認します。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
    • APIアプリ間でデータをやり取りする窓口
    • フォームinput(text, email, password, checkbox, radio)、select、textarea、button。
    • ステータスコード200/201/404 など結果を示す3桁の数値
    • 処理計算や代入を表す長方形
    main.js
    エディタを読み込んでいます

    メモ

    入力検証

    ⌘S で保存