コース一覧
    Node.js API開発
    更新と削除

    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分

    更新と削除

    設計図の残り2行

    プレーンテキスト

    PUT    /items/:id  商品を書き換える
    DELETE /items/:id  商品を削除する

    どちらも「どれに対して」がはっきりしているので、個別のパスに対して行います。

    PUT は書き換える

    更新は、詳細と登録を組み合わせた形になります。まず対象を探し、無ければ 404、あれば本文の内容で書き換えます。

    JavaScript

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

    探す・無ければ 404・あれば処理する、という流れは変更系でいつも同じです。

    id は書き換えさせない

    本文に id が入っていても、それで上書きしてはいけません。

    JavaScript

    item.id = req.body.id; // 危ない

    登録のときと同じ理由です。id は対象を指し示すためのもので、中身ではありません。パスで指定した id が正であり、本文の id は無視します。

    DELETE は消す

    削除は配列から取り除きます。

    JavaScript

    app.delete("/items/:id", (req, res) => {
      const index = items.findIndex((i) => i.id === Number(req.params.id));
      if (index === -1) {
        return res.status(404).json({ error: "商品が見つかりません" });
      }
      items.splice(index, 1);
      res.status(204).end();
    });

    204 は本文が無い

    削除の応答には 204 を使います。「成功したが、返すものは無い」という意味です。

    消したものを返しても仕方がないので、本文は空にします。res.json(...) ではなく res.status(204).end() と書くのはそのためです。204 は本文を持てない決まりなので、res.json で何か返そうとしても無視されます。

    手を動かす

    演習では、更新と削除の API を作ります。どちらも「無ければ 404」を忘れずに書いてください。

    要件

    1. PUT /items/:id は name と price を書き換え、{id, name, price} を返す
    2. DELETE /items/:id は商品を取り除き、204 を本文なしで返す
    3. どちらも見つからないときは 404 で {"error":"商品が見つかりません"} を返す

    ヒント

    更新も削除も、まず対象を探して、無ければ `return res.status(404)...` で抜けます

    書き換えは、見つけた商品の `name` と `price` に代入するだけです。`id` は触りません

    削除は `findIndex` で位置を求めて `splice(index, 1)` で取り除き、`res.status(204).end()` で返します

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

    関連レッスン

    • ステータスコード

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

    • つくる:商品CRUD完成

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

    • 第4章クイズ

      RESTとステータスコードの理解を4択で確認します。

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

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

    • 設計何をどう作るかを決める前工程
    • 処理計算や代入を表す長方形
    • 配列サイズ固定の同型データの集まり
    • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
    • APIアプリ間でデータをやり取りする窓口
    main.js
    エディタを読み込んでいます

    メモ

    更新と削除

    ⌘S で保存