1. 登録すると201で返る
  2. 価格が違っても同じ形で返る
  3. 登録していないときの一覧は1件のまま
コース一覧
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分

登録を受ける

送られてきたものを受け取る

設計図の 3 行目です。

プレーンテキスト

POST /items 商品を登録する

ここまでは返すだけでした。登録では逆に、相手から送られてきたデータを受け取ります。出品フォームに入力された商品名や価格が、リクエストの本文に入って届きます。

受け取る準備が要る

本文は、そのままでは読めません。1 行の準備が必要です。

JavaScript

const app = express(); app.use(express.json());

これは「JSON で届いた本文を、オブジェクトに直しておいてください」という指示です。これを書き忘れると req.body が undefined になります。

登録がうまくいかないときに最初に疑うところなので、覚えておいてください。

req.body から読む

準備ができたら、本文はこう読めます。

JavaScript

app.post("/items", (req, res) => { const newItem = { id: nextId, name: req.body.name, price: req.body.price, sold: false, }; items.push(newItem); res.status(201).json(newItem); });

読むのが req、書くのが res という役割は、第3章から変わりません。

作ったときは201

成功なら 200 でよさそうですが、登録のときは 201 を返します。「新しく作った」を表す専用の番号です。

受け取る側は、この番号だけで「一覧が更新された」と判断できます。数字で結果が伝わるのが、ステータスコードの利点です。

id はサーバーが決める

新しい商品の id を、送られてきた本文から取ってはいけません。

JavaScript

const newItem = { id: req.body.id, ... }; // 危ない

他人の商品と同じ id を指定されたら、データが壊れます。id はサーバーが決めるものです。この演習では、いまある最大の id に 1 を足す形にします。

手を動かす

演習では、出品の API を作ります。受け取る準備、id の採番、201 の 3 つを揃えてください。

要件

  1. express.json() を使って本文を読めるようにする
  2. POST /items は {id, name, price, sold} の形で作った商品を 201 で返す
  3. id は「いまある最大の id + 1」にし、sold は false にする

入出力例

request("POST", "/items", {"name":"古着のデニムジャケット","price":6200}) → "201 {"id":2,"name":"古着のデニムジャケット","price":6200,"sold":false}" request("POST", "/items", {"name":"木製のスツール","price":3500}) → "201 {"id":2,"name":"木製のスツール","price":3500,"sold":false}" request("GET", "/items") → "200 [{"id":1,"name":"レザースニーカー","price":4800,"sold":false}]"

ヒント

まず `app.use(express.json());` を足します。これが無いと `req.body` が読めません

最大の id は `items.reduce(...)` で求められます。空のときに 0 から始めれば、最初の id が 1 になります

返すときは `res.status(201).json(newItem)` の形でコードを指定します

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

関連レッスン

  • 更新と削除

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

  • ステータスコード

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

  • つくる:商品CRUD完成

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

  • 第4章クイズ

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

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

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

  • 設計何をどう作るかを決める前工程
  • フォームinput(text, email, password, checkbox, radio)、select、textarea、button。
  • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
  • applicationJSON 本文を送るときの Content-Type
  • オブジェクトキーと値のペアで構造を作るデータ
  • 判断YES/NO 分岐を表す菱形
  • ステータスコード200/201/404 など結果を示す3桁の数値
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
main.js
学習モード
エディタを読み込んでいます

メモ

登録を受ける

⌘S で保存