Menu
CoddyTech

Criando com POST

Parte da seção APIs REST do Journey de Node.js da Coddy. Lição 2 de 18.

Um cliente que adiciona uma tarefa precisa saber onde a nova tarefa fica. Ele envia o novo recurso para a URL da lista usando POST, e o servidor responde 201 Criado com o recurso e um cabeçalho Location que indica sua URL.

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

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

O servidor escolhe o id, então dois clientes nunca podem reivindicar o mesmo. Com o cabeçalho Location, o cliente pode buscar o novo evento sem montar a URL por conta própria. res.location(path) define esse cabeçalho e pode ser encadeado como res.status:

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

Desafio

Fácil
  • POST /api/tasks com { "title" } responde com 201 e a nova tarefa: id de nextId() em store.js, done: false, createdAt de new Date().toISOString().
  • Define Location como /api/tasks/<id>.
  • Sem title: 400.

Envie { "title": "Order new chairs" }, depois faça GET no caminho de Location e, em seguida, POST {}.

Experimente você mesmo

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;

Todas as lições de APIs REST