1. 商品一覧を求めるとき
  2. 同じパスでもメソッドが違えば別の依頼
  3. 動作確認のパス
  4. 知らないパスのとき
  5. 知らないメソッドのとき
コース一覧
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分

サーバーとリクエスト

サーバーは待っているプログラム

ここまでのスクリプトは、動かすと最後まで走って終わりました。サーバーは違います。起動したあと、終わらずに待ち続けます。

待っているのはリクエストです。誰かが「商品一覧をください」と言ってくるまで何もせず、来たら応答を返し、また待ちに戻ります。この繰り返しがサーバーの仕事です。

リクエストの中身

ブラウザや React アプリから届くリクエストには、少なくとも次の 2 つが入っています。

要素例意味
メソッドGET POST何をしたいのか
パス/items /items/1どれに対してか

GET /items なら「商品一覧を見せて」、POST /items なら「商品を登録して」です。動詞がメソッド、目的語がパスだと考えると読みやすくなります。

応答の中身

返すほうにも決まった形があります。

プレーンテキスト

ステータスコード 200 本文 {"id":1,"name":"レザースニーカー"}

ステータスコードは、うまくいったかどうかを表す 3 桁の数字です。よく使うものは次のとおりです。

コード意味
200うまくいった
201新しく作った
404そんなものは無い
500こちらの都合で失敗した

数字だけで結果が伝わるので、相手のプログラムは本文を読む前に成否を判断できます。

ポートという待ち受け口

サーバーは番号の付いた口で待ちます。これがポートです。

プレーンテキスト

http://localhost:3000/items

3000 がポート番号、/items がパスです。同じパソコンの中で複数のサーバーを動かせるのは、それぞれが別のポートで待つからです。逆に、すでに使われている番号で起動しようとすると失敗します。

手を動かす

演習では、メソッドとパスの組み合わせから、そのリクエストが何を求めているのかを判定する関数を書きます。サーバーが最初にする「どの依頼なのかを見分ける」仕事を、自分で書いてみてください。

要件

  1. GET と /items なら 商品一覧を返します
  2. POST と /items なら 商品を登録します
  3. GET と /health なら 動いているか答えます
  4. そのどれでもないときは 対応していないリクエストです

入出力例

describeRequest("GET", "/items") → "商品一覧を返します" describeRequest("POST", "/items") → "商品を登録します" describeRequest("GET", "/health") → "動いているか答えます" describeRequest("GET", "/users") → "対応していないリクエストです" describeRequest("DELETE", "/health") → "対応していないリクエストです"

ヒント

メソッドとパスの両方が合ったときだけ、その依頼だと判定します

2 つの条件をまとめて確かめるには `&&` を使います

どれにも当てはまらなかったときの返り値は、最後の 1 行がそのまま使えます

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

関連レッスン

  • Expressを導入する

    Hello fleamaを返す最小サーバーを立てられるようになります。

  • ルーティング

    ルートページとaboutページを作り、パスごとに応答を分けられるようになります。

  • JSONを返す

    商品1件をJSONで返し、APIらしい応答を返せるようになります。

  • 開発の回し方

    変更から確認までを短くする回し方を知り、開発を高速化できるようになります。

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

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

  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
  • ブラウザユーザーから見たWebのクライアント
  • メソッドクラスに属する関数
  • ステータスコード200/201/404 など結果を示す3桁の数値
  • 判断YES/NO 分岐を表す菱形
  • ポート番号1台のサーバーで複数のサービスを区別するための番号。
  • 関数処理に名前を付けて再利用できる単位
main.js
学習モード
エディタを読み込んでいます

メモ

サーバーとリクエスト

⌘S で保存