En esta lección, nos familiarizaremos con los controladores y aprenderemos cómo utilizarlos.
¿Qué es un controlador (handler)?
La principal parte sustancial en el archivo index.js es el controlador de solicitudes:
app.get('/', (req, res) => {
res.send('Hello World!');
});
Se establece un controlador para cada dirección, es una función que prepara una respuesta para una dirección dada y la devuelve. Luego, el servidor web convierte esta respuesta en una respuesta HTTP y la envía al cliente. En el ejemplo anterior, el controlador responde con la cadena 'Hello World' a la solicitud GET /.
En Fastify, toda la aplicación esta representada por un objeto de tipo Fastify. Este objeto contiene métodos similares a los métodos HTTP:
getpostputetc.
Estos métodos toman como entrada dos parámetros:
- La ruta para la cual se llamará.
- El propio controlador.
En el caso más simple, el controlador es una función a la que se le pasa dos objetos:
req(request) — es el objeto de solicitud que contiene toda la información sobre la solicitud enviada por el cliente. Contiene varias propiedades y métodos que permiten acceder a varios datos de la solicitudres(response) — es el objeto de respuesta, representa la respuesta que se enviará al cliente. También contiene varias propiedades y métodos para gestionar la respuesta.
En nuestro ejemplo, establecimos el cuerpo de la respuesta a través del método res.send(). Los otros parámetros se establecieron en el framework por defecto, por ejemplo, el código de respuesta 200.
Por lo general, en los frameworks se considera que la ruta es la combinación de método HTTP y dirección. En otras palabras, desde el punto de vista de la mayoría de los frameworks, GET /users y POST /users son rutas diferentes con sus propios controlador.
Veamos cómo funciona esto en la práctica. Definiremos las rutas correspondientes y realizaremos solicitudes a ellas con curl:
import fastify from 'fastify';
const app = fastify();
const port = 3000;
app.get('/users', (req, res) => {
res.send('GET /users');
});
app.post('/users', (req, res) => {
res.send('POST /users');
});
app.listen({ port }, () => {
console.log(`Example app listening on port ${port}`);
});
# After the app launch
curl localhost:3000/users
GET /users
curl -XPOST localhost:3000/users
POST /users
De esta manera, puedes agregar cualquier número de controladores para cualquier dirección.
¿Qué es el enrutamiento?
Cuando la aplicación recibe una solicitud, ¿cómo sabe qué controlador debe ejecutar? Esta tarea es resuelta por el enrutamiento de solicitudes, que está implementado dentro del framework. Simplificando, este proceso se ve así:
- El framework analiza los parámetros de la solicitud e intenta emparejar dos rutas, la agregada al objeto
appy la recibida en la solicitud. En otras palabras, compara la combinación del método de la solicitud y la dirección en sí. Este proceso se conoce como enrutamiento o encaminamiento - Si durante el enrutamiento, el framework encontró la ruta correspondiente, entonces se llama a su controlador. Luego, la respuesta del controlador se envía de vuelta al cliente.
- Si el framework no encuentra el controlador necesario, se ejecuta el controlador por defecto, que devuelve un error 404
Trabajo independiente
- Realiza todos los pasos de esta lección en tu computadora
- Inicia la aplicación y abre la página /users en tu navegador. Asegúrate de que el texto se muestra en la pantalla.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.