Explore el controlador; La parte más importante de NestJS
En esta publicación, exploraremos el controlador, que es la parte más importante de NestJS.
Los controladores son responsables de manejar las solicitudes enviadas al servidor, los controladores exponen múltiples endpoints donde los clientes pueden enviar la solicitud. Cada endpoint se identifica mediante un método HTTP también conocido como verbo HTTP.
-
GET: El método GET se usa para obtener los datos del servidor, puede ser un recurso único o múltiples recursos. También podemos pasar algunos parámetros que se pueden usar para filtrar los recursos.
-
POST: El método POST se usa cuando queremos crear algunos recursos en el servidor. También podemos usar solicitudes POST en los casos en que queramos filtrar algunos recursos en función de la información enviada al servidor, por ejemplo, proporcionando un filtro avanzado.
-
PUT: El método PUT se usa para actualizar los recursos en el servidor. En el método PUT, esperamos que se actualicen los datos que enviemos.
-
PATCH: El método PATCH se usa cuando solo queremos modificar, no reemplazar todos los valores en el servidor.
-
DELETE: El método DELETE se usa cuando queremos eliminar algunos recursos del servidor.
Otra cosa que debe tener en cuenta son los códigos de estado HTTP. Puede consultar la documentación de Mozilla para ver la lista de códigos de estado. El método POST devuelve 201 como código de estado en éxito, otros métodos devuelven 200 como código de estado.
La imagen de arriba muestra un ProductController que tomará las solicitudes del cliente y la solicitud es manejada por uno de los endpoints/métodos definidos. Un método HTTP puede recibir una solicitud HTTP y devolver una respuesta HTTP en forma de JSON, XML, archivos o texto.
Para crear un controlador, podemos usar la CLI de Nest, en nuestra aplicación ya tenemos un controlador disponible, crearemos uno nuevo llamado product, ejecute el siguiente comando para crear.
nest generate controller product -p defaultEl indicador -p se asegurará de que el controlador esté creado en la aplicación predeterminada (default); de lo contrario, puede pasar el nombre product donde desea crear el controlador.
Una vez que se ejecuta el comando, notará dos nuevos archivos.
product.controller.tsproduct.controller.spec.ts(para pruebas unitarias)
Necesitamos escribir nuestro código en product.controller.ts. Si abre este archivo, encontrará el siguiente código.
import { Controller } from "@nestjs/common";
@Controller("product")
export class ProductController {}@Controller(): el decorador para controlador se agrega sobre la claseProductController. Si viene desde .Net o Java, ha utilizado uno al crear un API web. Se necesita un parámetro donde puede pasar elendpoint/ruta donde se puede enviar la solicitud.
Agreguemos nuestro primer método Get() que devolverá un producto filtrado por su id. Crearemos una lista ficticia de productos, veremos la integración de la base de datos en uno de los próximos artículos.
Abra product.controller.ts y agregue el siguiente código:
import { Controller, Get, Param } from "@nestjs/common";
@Controller("products")
export class ProductController {
products = [
{
id: "6c3bf8af-d30a-41cf-a589-4d9013a5ac6c",
name: "Sour Puss Raspberry",
description:
"tincidunt ante vel ipsum praesent blandit lacinia erat vestibulum sed magna",
price: "130.09"
},
{
id: "b801d825-e18e-4bcf-922b-a7f3c77b8120",
name: "Pear - Packum",
description:
"sed ante vivamus tortor duis mattis egestas metus aenean fermentum donec",
price: "346.88"
},
{
id: "d4ac2d37-a836-4499-b27d-57066db43e68",
name: "French Kiss Vanilla",
description:
"hac habitasse platea dictumst aliquam augue quam sollicitudin vitae consectetuer eget rutrum at lorem integer",
price: "768.83"
},
{
id: "5c3d4106-9f76-47f6-821e-8d223fedc157",
name: "Sauce - Alfredo",
description:
"quam fringilla rhoncus mauris enim leo rhoncus sed vestibulum sit amet",
price: "664.76"
},
{
id: "ff7b2867-d59e-42c5-b470-39578aa46f46",
name: "Hipnotiq Liquor",
description:
"turpis enim blandit mi in porttitor pede justo eu massa donec",
price: "918.52"
}
];
@Get()
getAll() {
return this.products;
}
}El código resaltado es lo que hemos agregado para crear nuestro método Get().
@Get: el decoradorGetaquí especifica que cuando un cliente envía una solicitud enhttps://endpoint/productscon el métodoGetHTTP, se llamará agetAll().
Adelante, pruébalo. Inicie el servidor usando el comando npm run start:dev que ejecutará nuestro servidor en modo de observación y detectará cambios cada vez que realicemos algún cambio en nuestro código.
Ingrese http://localhost:3000/products en su navegador, las llamadas se pueden activar a través del navegador.
El código resaltado se agrega para el método Post y el resto del código sigue siendo el mismo.
@Post()
store(@Body() data: Request) {
const product = {
id: uuidv4()
}
this.products.push(req.body);
return req.body.id;
}-
@Post: El decorador dePostdebe definir el métodostore(). Será iniciado por un cliente cuando se realice una solicitud ahttps://endpoint/productscon el métodoPost. El métodoPostno pueden iniciarse usando el navegador, necesitamos un cliente, yo uso Insomnia para las pruebas. -
@Req: podemos obtener acceso al objeto de solicitud HTTP. Puede obtener acceso al cuerpo (en este caso asociado al decorador@Bodyque lo maneja como un objeto), encabezados y otros parámetros de solicitud.


