Menu
CoddyTech

POSTによる作成

CoddyのNode.jsジャーニー「REST API」セクションの一部。レッスン 2/18。

タスクを追加するクライアントは、新しいタスクがどこにあるかを知る必要があります。新しいリソースをリストのURLにPOSTで送信すると、サーバーはリソースと、そのURLを示すLocationヘッダーを付けて201 Createdを返します。

POST /api/events   { "name": "Launch party" }

201 Created
Location: /api/events/12
{ "id": 12, "name": "Launch party" }

サーバーがidを決めるため、2つのクライアントが同じidを使うことはありません。Locationヘッダーがあれば、クライアントは自分でURLを組み立てずに新しいイベントを取得できます。res.location(path)はこのヘッダーを設定し、res.statusと同じようにチェーンできます。

res.status(201).location(`/api/events/${event.id}`).json(event);
challenge icon

チャレンジ

簡単
  • POST /api/tasks に { "title" } を送ると、新しいタスクとともに 201 を返します。store.js の nextId() による id、done: false、new Date().toISOString() による createdAt が含まれます。
  • Location を /api/tasks/<id> に設定します。
  • title がない場合は 400 です。

{ "title": "Order new chairs" } を送信し、次に Location のパスに GET を行い、その後 {} を POST します。

自分で試してみよう

import { Router } from 'express';
import { tasks } from '../store.js';

const router = Router();

router.get('/', (req, res) => {
    res.json(tasks);
});

router.get('/:id', (req, res) => {
    const task = tasks.find((t) => t.id === Number(req.params.id));
    if (!task) {
        return res.status(404).json({ error: 'Task not found' });
    }
    res.json(task);
});

export default router;

REST APIのすべてのレッスン