1. 書き換えると新しい内容で返る
  2. 本文の id は無視され、パスの id が残る
  3. 無い id の更新は404
  4. 削除は204で本文なし
  5. 無い id の削除は404
コース一覧
Node.js入門
更新と削除

Node.js入門

Node.jsの実行モデル、npm、Expressによるルーティング、REST API設計、データベース接続、トランザクションを使った購入処理、トークン認証まで、バックエンド開発の基礎を、毎レッスン実際にコードを書き、フリマアプリのAPIを自分の手で作りながら学びます。

1
Node.jsとは
01. Node.jsとは15分
02. スクリプトを実行する15分
03. npmとは15分
04. package.json15分
05. npmスクリプト15分
06. つくる:プロジェクト始動20分
07. 第1章クイズ10分
2
モジュールと非同期の復習
01. import/export15分
02. ファイルを読み書きする15分
03. async/await復習15分
04. JSONの取り回し15分
05. つくる:データ層20分
06. 第2章クイズ10分
3
はじめてのサーバー
01. サーバーとリクエスト15分
02. Expressを導入する15分
03. ルーティング15分
04. JSONを返す15分
05. 開発の回し方15分
06. つくる:サーバー始動20分
07. 第3章クイズ10分
4
REST APIのきほん
01. RESTの考え方15分
02. 一覧を返す15分
03. 1件を返す15分
04. 登録を受ける15分
05. 更新と削除15分
06. ステータスコード15分
07. つくる:商品CRUD完成20分
08. 第4章クイズ10分
5
リクエスト処理と検証
01. クエリパラメータ15分
02. 並び替えとページング15分
03. 入力検証15分
04. ミドルウェア15分
05. エラーハンドリング15分
06. つくる:検索API完成20分
07. 第5章クイズ10分
6
データベース接続
01. DBにつなぐ15分
02. 一覧・詳細をDB化15分
03. 出品をDB化15分
04. SQLインジェクション20分
05. 更新・削除をDB化15分
06. 購入トランザクション20分
07. つくる:DB版fleama20分
08. 第6章クイズ10分
7
認証のきほん
01. 認証と認可15分
02. パスワードハッシュ15分
03. ログインとトークン15分
04. 保護ルート15分
05. 本人のものだけ15分
06. つくる:認証完備20分
07. 第7章クイズ10分
8
総合制作
01. fleama API完成20分
02. Reactと接続する20分
03. サーバーで常駐させる20分
04. 自由拡張20分
05. 完成と次のステップ15分

更新と削除

設計図の残り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":"商品が見つかりません"} を返す

入出力例

request("PUT", "/items/1", {"name":"革のスニーカー","price":5200}) → "200 {"id":1,"name":"革のスニーカー","price":5200}" request("PUT", "/items/2", {"id":99,"name":"デニムジャケット","price":6000}) → "200 {"id":2,"name":"デニムジャケット","price":6000}" request("PUT", "/items/999", {"name":"x","price":1}) → "404 {"error":"商品が見つかりません"}" request("DELETE", "/items/1") → "204 " request("DELETE", "/items/999") → "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択で確認します。

  • クエリパラメータ

    キーワードとカテゴリで絞る検索APIを書き、検索条件を受け取れるようになります。

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

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

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

メモ

更新と削除

⌘S で保存