一覧を返す
設計図の1行目を実装する
前のレッスンで書いた表の 1 行目から始めます。
プレーンテキスト
GET /items 商品一覧を返す第3章で似たものを作りました。今回はそれを、API として使える形に整えます。
一覧は必ず配列で返す
商品が 1 件でも、0 件でも、返すのは配列です。
JavaScript
app.get("/items", (req, res) => {
res.json(items);
});0 件のときに { "message": "商品がありません" } のようなオブジェクトを返したくなりますが、してはいけません。受け取る側が困るからです。
JavaScript
// 受け取る側
const items = await response.json();
items.map((item) => ...); // 配列でないと落ちる同じパスは、いつ呼んでも同じ形を返す。 中身が空でも形は変えない、というのが約束です。0 件なら [] を返します。
空も正常です
商品が 1 件も無いのは、エラーではありません。「探したけれど無かった」は、探す処理としては成功しています。
ですから 404 ではなく 200 を返し、本文は [] にします。404 は「そのパス自体が無い」ときのものです。次のレッスンで、404 を返すべき場面が出てきます。
返す前に整える
第3章で触れたとおり、持っているものを全部返す必要はありません。
JavaScript
app.get("/items", (req, res) => {
res.json(items.map((item) => ({
id: item.id,
name: item.name,
price: item.price,
sold: item.sold,
})));
});一覧に出す項目は、一覧の画面で必要なものだけです。出品者の連絡先や、商品説明の長い文章は、詳細を見るときに取れば足ります。一覧が軽くなるという実利もあります。
手を動かす
演習では、商品一覧の API を作ります。空のときの振る舞いにも気を配ってください。
要件
GET /itemsはidnamepricesoldだけにした商品の配列を返すGET /emptyは空の配列[]を 200 で返す- どちらも
ownerEmailを含めない
ヒント
編集 ゆめさく編集部