Menu
CoddyTech

Создание с помощью POST

Часть раздела REST API путешествия по Node.js на Coddy. Урок 2 из 18.

Клиенту, который добавляет задачу, нужно знать, где находится новая задача. Он отправляет новый ресурс по URL списка с помощью POST, а сервер отвечает 201 Created, возвращая ресурс и заголовок Location с указанием его URL.

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

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

Идентификатор назначает сервер, поэтому два клиента никогда не смогут запросить один и тот же. С помощью заголовка Location клиент может получить новое мероприятие, не формируя URL самостоятельно. res.location(path) задаёт этот заголовок и может быть объединён в цепочку вызовов, как res.status:

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

Задание

Легко
  • POST /api/tasks с { "title" } отвечает кодом 201 и возвращает новую задачу: id из nextId() в store.js, done: false, createdAt из new Date().toISOString().
  • В заголовке Location указывается /api/tasks/<id>.
  • Без title: 400.

Отправьте { "title": "Order new chairs" }, затем выполните GET-запрос по пути из заголовка Location, затем отправьте 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