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í.
Desafío
FácilPOST /tasksresponde con 201 y la nueva tarea: un nuevo númeroid, eltitleydone: false.GET /tasks/:idla encuentra después.- Envía esa solicitud, después envía
POST /taskscon{}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
1Fundamentos de Nest
Hola, NestParámetros de ruta