1. 一覧が配列で返り、メールは含まれない
  2. 1件がオブジェクトで返る
コース一覧
Node.js入門
JSONを返す

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分

JSONを返す

文字列では受け取る側が困る

ここまで res.send("商品一覧です") のように文字列を返してきました。人が読む分にはよいのですが、React アプリが受け取っても使えません。

受け取る側がほしいのは、そのまま扱えるデータです。

JavaScript

res.json({ id: 1, name: "レザースニーカー", price: 4800 });

こう返すと、受け取った側は data.price のように読めます。API が JSON を返すのは、相手がプログラムだからです。

res.json がやってくれること

res.json は 2 つのことを同時にやります。

  1. 渡したオブジェクトを JSON の文字列に変える
  2. 「これは JSON です」と応答に書き添える

2 つ目が大切です。受け取った側は、この印を見て中身を解釈します。res.send で JSON.stringify した文字列を渡しても、印が付かないので相手が扱いを間違えることがあります。JSON を返すときは res.json を使ってください。

配列も返せる

一覧を返すときは配列を渡します。

JavaScript

app.get("/items", (req, res) => { res.json([ { id: 1, name: "レザースニーカー", price: 4800 }, { id: 2, name: "古着のデニムジャケット", price: 6200 }, ]); });

これで GET /items が、フリマの商品一覧を返す API になりました。第2章で作ったデータ層とつなげば、ファイルの中身がそのまま API の応答になります。

何を返し、何を返さないか

持っているデータを全部返す必要はありません。

JavaScript

const item = { id: 1, name: "レザースニーカー", price: 4800, ownerEmail: "..." }; res.json({ id: item.id, name: item.name, price: item.price });

出品者のメールアドレスは、一覧を見る人には要らない情報です。返すものは選ぶ、と覚えてください。うっかり全部返すと、見せるつもりのなかったものが外に出ます。第7章の認証で、この判断がもう一度出てきます。

手を動かす

演習では、商品の一覧と 1 件を JSON で返します。返す項目を自分で選んでください。

要件

  1. GET /items は 2 件の商品を配列で返す
  2. GET /item は先頭の 1 件だけをオブジェクトで返す
  3. 返す項目は id name price の 3 つだけにして、ownerEmail は含めない

入出力例

request("GET", "/items") → "200 [{"id":1,"name":"レザースニーカー","price":4800},{"id":2,"name":"古着のデニムジャケット","price":6200}]" request("GET", "/item") → "200 {"id":1,"name":"レザースニーカー","price":4800}"

ヒント

`res.send` を `res.json` に変えるところから始めます

返す項目を絞るには、`{ id: item.id, name: item.name, price: item.price }` の形を作ります

一覧は `items.map(...)` で 1 件ずつ絞った配列にしてから渡します

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

関連レッスン

  • 開発の回し方

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

  • つくる:サーバー始動

    健康確認と商品一覧のパスを備え、起動から応答までを自力で組めるようになります。

  • 第3章クイズ

    Expressとルーティングの理解を4択で確認します。

  • RESTの考え方

    fleamaのAPI一覧表を設計し、リソースとメソッドで設計できるようになります。

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

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

  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • APIアプリ間でデータをやり取りする窓口
  • applicationJSON 本文を送るときの Content-Type
  • オブジェクトキーと値のペアで構造を作るデータ
  • 配列サイズ固定の同型データの集まり
  • 認証「この人は本当に本人?」のチェック
  • 判断YES/NO 分岐を表す菱形
main.js
学習モード
エディタを読み込んでいます

メモ

JSONを返す

⌘S で保存