Menu
CoddyTech

Creación de tareas

Parte de la sección TypeScript y NestJS del Journey de Node.js de Coddy. Lección 4 de 17.

Un cliente que crea una tarea la envía como JSON en el cuerpo de la solicitud y necesita recibir de vuelta la tarea guardada.

@Post()
create(@Body() review: { stars: number }) {
    this.reviews.push(review);
    return review;
}

@Post() asigna las solicitudes POST en la ruta del controlador al método, y @Body() le pasa el JSON analizado. Nest lee los cuerpos JSON por sí solo, así que no hace falta añadir express.json().

Nest responde a una solicitud POST con 201 Creado, el estado que indica que existe un recurso nuevo, y a cualquier otro método con 200. @HttpCode(200) en el método lo cambiaría; para una creación, déjalo así.

challenge icon

Desafío

Fácil
  • POST /tasks responde con 201 y la nueva tarea: un nuevo número id, el title y done: false.
  • GET /tasks/:id la encuentra después.
  • Envía esa solicitud, después envía POST /tasks con {} y observa qué se guarda.

Pruébalo tú mismo

import { Controller, Get, Param, Query } from '@nestjs/common';

interface Task {
    id: number;
    title: string;
    done: boolean;
}

@Controller('tasks')
export class TasksController {
    private tasks: Task[] = [
        { id: 1, title: 'Write the README', done: true },
        { id: 2, title: 'Fix the login bug', done: false },
        { id: 3, title: 'Plan the sprint', done: false },
    ];

    @Get()
    findAll(@Query('done') done?: string): Task[] {
        if (done === undefined) {
            return this.tasks;
        }
        return this.tasks.filter((task) => task.done === (done === 'true'));
    }

    @Get(':id')
    findOne(@Param('id') id: string): Task | undefined {
        return this.tasks.find((task) => task.id === Number(id));
    }
}

Todas las lecciones de TypeScript y NestJS