コース一覧
    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分

    クエリパラメータ

    絞り込みはパスに入れない

    フリマで「靴」を探したいとき、こういうパスを作りたくなります。

    プレーンテキスト

    /items/search/靴

    ですが条件が増えると破綻します。カテゴリでも絞りたい、価格の上限も付けたい、となったときにパスの形が決められません。

    絞り込みの条件は、パスではなくクエリパラメータで渡します。

    プレーンテキスト

    /items?keyword=靴&category=shoes

    ? から後ろがクエリです。& で区切っていくつでも並べられ、順番も問いません。

    パスとクエリの使い分け

    表すもの例
    パスどのリソースか/items/1
    クエリどう絞り込むか/items?keyword=靴

    そのものを指すのがパス、条件を添えるのがクエリです。/items は条件が付いても /items のままなので、リソースの構造が崩れません。

    req.query から読む

    読み方は req.params とよく似ています。

    JavaScript

    app.get("/items", (req, res) => {
      const keyword = req.query.keyword;
      const category = req.query.category;
    });

    ?keyword=靴 なら req.query.keyword は "靴" です。

    無いときは undefined になる

    クエリは付いていないこともあります。/items とだけ呼ばれたら req.query.keyword は undefined です。

    ですから、無いときにどうするかを必ず決めます。

    JavaScript

    const keyword = req.query.keyword || "";

    || は「左が空っぽなら右を使う」という書き方です。これで、条件が無いときは絞り込まない、という自然な形になります。

    こちらも文字列で届く

    第4章の req.params と同じで、クエリの値もすべて文字列です。

    JavaScript

    const limit = req.query.limit;      // "5"
    const limit2 = Number(req.query.limit); // 5

    数として使うなら直します。この取り違えは、次のレッスンの並び替えとページングでも効いてきます。

    手を動かす

    演習では、キーワードとカテゴリで商品を絞り込む API を作ります。条件が無いときの振る舞いにも気を配ってください。

    要件

    1. keyword があれば name にその文字が含まれるものだけに絞る
    2. category があれば category が一致するものだけに絞る
    3. どちらも無ければ全件を返す(返す項目は id name category の 3 つ)

    ヒント

    `req.query.keyword` は指定が無いと `undefined` です。`|| ""` で空文字に落とします

    絞り込みは `filter` を重ねます。条件があるときだけ絞る形にします

    文字が含まれるかどうかは `item.name.includes(keyword)` で確かめられます

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

    関連レッスン

    • 並び替えとページング

      新着順と価格順にページングを添え、一覧を制御できるようになります。

    • 入力検証

      価格が数値かとタイトル必須を確かめ、不正な出品を弾けるようになります。

    • ミドルウェア

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

    • エラーハンドリング

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

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

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

    • クエリパラメータURL の `?` 以降に付ける `key=value` 形式のリクエストデータ
    • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
    • APIアプリ間でデータをやり取りする窓口
    main.js
    エディタを読み込んでいます

    メモ

    クエリパラメータ

    ⌘S で保存