コース一覧
    Node.js API開発
    1件を返す

    Node.js API開発

    HTTPサーバーとREST APIの設計・実装を学び、Node.jsでクライアントから使えるAPIを構築できるようにします。

    1
    はじめてのサーバー
    01. サーバーとリクエスト15分
    02. Expressを導入する15分
    03. ルーティング15分
    04. JSONを返す15分
    05. 開発の回し方15分
    06. つくる:サーバー始動20分
    07. 第3章クイズ10分
    2
    REST APIのきほん
    01. RESTの考え方15分
    02. 一覧を返す15分
    03. 1件を返す15分
    04. 登録を受ける15分
    05. 更新と削除15分
    06. ステータスコード15分
    07. つくる:商品CRUD完成20分
    08. 第4章クイズ10分

    1件を返す

    パスの一部を受け取る

    設計図の 2 行目に進みます。

    プレーンテキスト

    GET /items/:id  商品1件を返す

    :id は、第3章のルーティングで少しだけ触れた書き方です。そこに何が来ても合うという印で、実際に来た値は req.params から読めます。

    JavaScript

    app.get("/items/:id", (req, res) => {
      console.log(req.params.id);
    });

    /items/3 が来たら req.params.id は "3" になります。名前は :id と書いたところがそのまま使われます。

    パスから来る値は必ず文字列

    注意すべき点があります。req.params.id は数値ではなく文字列です。

    JavaScript

    const item = items.find((i) => i.id === req.params.id); // 見つからない

    1 === "1" は成り立たないので、これでは永遠に見つかりません。数値に直してから比べます。

    JavaScript

    const item = items.find((i) => i.id === Number(req.params.id));

    URL の一部として届く値は、いつも文字列だと覚えてください。第5章のクエリパラメータでも同じことが起きます。

    無かったときに404を返す

    前のレッスンで「一覧が 0 件でも 200」と書きました。1 件を取りに行く場合は違います。

    JavaScript

    app.get("/items/:id", (req, res) => {
      const item = items.find((i) => i.id === Number(req.params.id));
      if (!item) {
        return res.status(404).json({ error: "商品が見つかりません" });
      }
      res.json(item);
    });

    /items/999 は「そんな商品は無い」ので 404 です。一覧の 0 件は「集まりは存在して、中身が空」なので 200 でした。対象そのものが無いのか、中身が空なのかで分かれます。

    return を付ける理由

    上の例で return res.status(404)... と書いているのは大切な点です。return が無いと処理が下へ続き、res.json(item) まで動いてしまいます。

    1 つのリクエストに返せる応答は 1 回だけなので、2 回目でエラーになります。返したらその場で抜けるのを習慣にしてください。

    手を動かす

    演習では、商品 1 件を返す API を作ります。見つからないときの扱いまで含めて書いてください。

    要件

    1. GET /items/:id はその id の商品を id name price の形で返す
    2. 見つからないときは 404 で {"error":"商品が見つかりません"} を返す
    3. パスから来る id は文字列なので、数値に直してから比べる

    ヒント

    初期コードは `req.params.id` を文字列のまま比べているので、1 件も見つかりません

    `Number(req.params.id)` で数値に直してから比べます

    見つからなかったときは `return res.status(404).json(...)` で、その場で抜けます

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

    関連レッスン

    • 登録を受ける

      出品APIを書き、作成したときに201を返せるようになります。

    • 更新と削除

      商品編集と取下げのAPIを書き、変更系を実装できるようになります。

    • ステータスコード

      各APIの返却コードを整え、状況に応じた番号を返せるようになります。

    • つくる:商品CRUD完成

      一通りのCRUDを通しで動かし、商品まわりのAPIを完成できるようになります。

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

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

    • 設計何をどう作るかを決める前工程
    • ルーティングURLパスとHTTPメソッドに応じて処理を振り分ける仕組み。
    • URLページの住所全体
    • クエリパラメータURL の `?` 以降に付ける `key=value` 形式のリクエストデータ
    • 処理計算や代入を表す長方形
    • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
    • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
    • APIアプリ間でデータをやり取りする窓口
    main.js
    エディタを読み込んでいます

    メモ

    1件を返す

    ⌘S で保存