1. 4件がこの順で返る
  2. 前の Issue のヘルスチェックも生きている
コース一覧
Express道場 fleama開発室のIssue10件
#102 カテゴリ一覧APIが欲しい

Express道場 fleama開発室のIssue10件

Node.js入門で作り上げた fleama API の開発室に、スプリントの助っ人として参加する演習専用コースです。解説はありません。1問が1件の Issue で、報告者は商店街の住人たち。依頼と完成条件だけを読み、白紙から自分で組み立てます。手が止まったときのために、方針・使う構文・部分解の3段階のヒントを各問に用意しています。ヘルスチェックから始まり、一覧API、404の扱い、並び替えとページング、入力検証、自作ミドルウェア、エラー形式の統一、所有者チェック、二重販売を止めるトランザクションを経て、最後はいいね機能をエンドポイント設計から任されるところまで、10件の Issue で Express の主要な道具を一巡します。1問15分から45分、全10問で約5時間です。Node.js入門を終えて「作れたけれど実務で通用するか不安」と感じている方に向いています。

1
今週のスプリント
01. #101 監視用ヘルスチェックが欲しい15分
02. #102 カテゴリ一覧APIが欲しい20分
03. #103 消えた商品を開くと落ちる20分
04. #104 検索に並び替えとページングを25分
05. #105 0円出品が通ってしまう25分
06. #106 調査用のアクセスログを25分
07. #107 エラーの形式がバラバラ30分
08. #108 他人の出品を値下げできてしまう30分
09. #109 同じ商品が2人に売れた35分
10. #110 新機能「いいね」を設計から45分

#102 カテゴリ一覧APIが欲しい

初段 / 目安 20分

2件目は、実際の利用者からの依頼です。


Issue #102 カテゴリ一覧APIが欲しい

報告者: 陽葵(カフェ店長・fleama で食器を出品中)

「出品するときカテゴリを手打ちしてるの。選択式にしたいから一覧 API をちょうだい」


手打ちが問題なのは、面倒だからではありません。表記が揺れるからです。食器 と 職器 が別のカテゴリとして登録されてしまえば、検索で見つからない商品が生まれます。

選択式にすれば、そもそも打ち間違いようがありません。データの正しさを、入力の時点で保証する形です。

返すのは配列です。前の Issue の {"status":"ok"} はオブジェクトでしたが、一覧なので今回は配列で返します。

JavaScript

res.json([{ id: "tableware", name: "食器" }]);

順序も仕様のうちです。画面に出る並びがそのまま決まるので、勝手に並べ替えないでください。よく使うものを上に置く、という判断はサーバー側の仕事です。

完成条件

GET /categories を作り、次の4件をこの順で返してください。

idname
tableware食器
clothing衣類
furniture家具
book本

1件は {"id":"tableware","name":"食器"} の形です。

要件

  1. GET /categories が4件のカテゴリを配列で返す
  2. 1件は id と name の2つのキーを持つ
  3. 並びは 食器・衣類・家具・本 の順にする

入出力例

request("GET", "/categories") → "200 [{"id":"tableware","name":"食器"},{"id":"clothing","name":"衣類"},{"id":"furniture","name":"家具"},{"id":"book","name":"本"}]" request("GET", "/health") → "200 {"status":"ok"}"

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

カテゴリのデータはすでに用意してあります。返すルートを足すだけです

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

関連レッスン

  • #103 消えた商品を開くと落ちる

    存在しない商品を開いたときに落ちないよう、404を返す形に直します。

  • #104 検索に並び替えとページングを

    安い順に少しずつ見られるよう、並び替えと件数の指定を受け取ります。

  • #105 0円出品が通ってしまう

    タイトル必須と価格の下限を確かめ、不正な出品を400で止めます。

  • #106 調査用のアクセスログを

    全リクエストのメソッドとパスを記録するミドルウェアを自作します。

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

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

  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • APIアプリ間でデータをやり取りする窓口
  • 配列サイズ固定の同型データの集まり
  • オブジェクトキーと値のペアで構造を作るデータ
  • 判断YES/NO 分岐を表す菱形
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
main.js
学習モード
エディタを読み込んでいます

メモ

#102 カテゴリ一覧APIが欲しい

⌘S で保存