Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Node.js
Code

Códificar Su Primera API Con Node.js y Express: Conectar una Base de Datos

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Code Your First API With Node.js and Express.
Code Your First API With Node.js and Express: Set Up the Server

Spanish (Español) translation by Alfonso Mora (you can also view the original English article)

Construir una API REST con Node.js y Express: Conexión de una Base de Datos

En el primer tutorial, comprensión APIs RESTful, aprendimos lo que es la arquitectura del resto, qué son los métodos de la petición HTTP y las respuestas y cómo entender un extremo API RESTful. En el segundo tutorial, Cómo para Instalar un Express API Servidor, aprendimos cómo crear servidores con módulo de http integrado del nodo y el marco de Express y cómo la aplicación que hemos creado la ruta a diferentes puntos finales de la URL.

Actualmente, estamos utilizando datos estáticos para mostrar información de usuario en la forma de un JSON cuando el extremo de la API es golpeado con una petición GET. En este tutorial vamos a configurar una base de datos MySQL para almacenar todos los datos, conectarse a la base de datos desde nuestra aplicación de Node.js y permite el API para usar el GET, POST, PUT y DELETE los métodos para crear una completa API.

Instalación

Hasta el momento no hemos utilizado una base de datos para almacenar o manipular cualquier dato, por lo que vamos a configurar una. Este tutorial va a utilizar MySQL, y si ya tienes MySQL instalado en su computadora, usted estará listo para pasar al siguiente paso.

Si no tienes MySQL instalado, puede descargar MAMP para macOS y Windows, que proporciona un libre, entorno de servidor local y la base de datos. Una vez que este descargado, abrir el programa y haga clic en Iniciar Servidores para iniciar MySQL.

Además de configurar MySQL sí mismo, queremos software GUI para ver la base de datos y tablas. Para Mac, descargar SequelPro y para Windows Descargar SQLyog. Una vez que MySQL descargado y funcionando, puede utilizar SequelPro o SQLyog para conectar a localhost con el username root y la contraseña root en el puerto 3306.

Una vez que todo está aquí, podemos pasar a configurar la base de datos de nuestro API.

Configuración de la Base de Datos

En su base de datos de software de visualización, agregar una nueva base de datos y llamar al api. Asegúrese de que MySQL se está ejecutando, o no podrá conectarse a localhost.

Cuando tengas la base de datos api creado, moverse en él y ejecute la siguiente consulta para crear una nueva tabla.

Esta consulta SQL va a crear la estructura de nuestra tabla de usuarios. Cada usuario tendrá un incremento automático id, un nombre y una dirección de correo electrónico.

También podemos rellenar la base de datos con los mismos datos que en la actualidad estamos viendo a través de un arreglo estático de JSON ejecutando una consulta INSERT.

No hay necesidad para el campo de id de entrada como incremento automático. En este punto, tenemos la estructura de nuestra mesa, así como algunos datos de ejemplo para trabajar con.

Conexión a MySQL

En nuestra aplicación tenemos que conectar a MySQL de Node.js para comenzar a trabajar con los datos. Anterior, instalamos el módulo de gestión de mysql, y ahora que vamos a utilizar.

Crear un nuevo directorio llamado data y hacer un archivo config.js.

Empezaremos por que requiere el módulo de mysql en data/config.js.

Vamos a crear un objeto de config que contiene el host, usuario, contraseña y base de datos. Esto debe referirse a la base de datos api hemos hecho y usar el localhost por defecto.

Para la eficiencia, vamos a crear un pool de MySQL, que nos permite utilizar múltiples conexiones a la vez en lugar de tener que manualmente abrir y cerrar conexiones múltiples.

Por último, a exportar la piscina de MySQL para poder utilizar la aplicación.

Se puede ver el archivo de configuración de base de datos completa en nuestro repositorio de GitHub.

Ahora que nos estamos conectando a MySQL y nuestra configuración es completa, podemos pasar a interactuar con la base de datos de la API.

Obtener Datos de la API de MySQL

Actualmente, nuestro archivo de routes.js es crear manualmente una matriz JSON de los usuarios, que se parece a esto.

Ya que estamos ya no va a utilizar datos estáticos, podemos eliminar toda matriz y reemplazarlo con un enlace a nuestra piscina de MySQL.

Previamente, el GET la ruta /users enviaba los datos de los usuarios estáticos. Nuestro código actualizado se va a consultar la base de datos para que los datos en su lugar. Vamos a utilizar una consulta SQL SELECT para todo de la tabla de usuarios, que se ve así.

Aquí es lo que nuestro nuevo /users ruta parecerá, utilizando el método de pool.query().

Aquí, estamos ejecutando la consulta SELECT y entonces enviar el resultado como JSON al cliente vía el extremo /users. Si reinicia el servidor y vaya a la página de /users, verás los mismos datos que antes, pero ahora es dinámico.

Utilizando Parámetros de URL

Hasta ahora, nuestros criterios de valoración han sido rutas estáticas, ya sea el / root o /users — pero ¿qué pasa cuando queremos ver datos únicamente sobre un usuario específico? Necesitaremos utilizar un extremo variable.

Para nuestros usuarios, podríamos querer recuperar información sobre cada usuario individual basado en su identificador único. Para ello, usaríamos dos puntos (:) para indicar que es un parámetro de ruta.

Podemos recuperar el parámetro para este camino con la propiedad de request.params. Desde nuestro es llamado id, será cómo nos referimos a él.

Ahora vamos a añadir una cláusula WHERE a la instrucción SELECT para obtener sólo resultados que tienen el id especificado.

Vamos a utilizar ? como un marcador de posición para evitar SQL injection y pasar la identificación como un parámetro, en lugar de construir una cadena concatenada, que sería menos seguro.

El código completo de nuestro recurso de usuario individual ahora este aspecto:

Ahora puede reiniciar el servidor y vaya a https://localhost/users/2 para ver sólo la información para Gilfoyle. Si obtiene un error como Cannot GET /users/2, significa que tendrá que reiniciar el servidor.

Ir a esta URL que devuelva un único resultado.

Si eso es lo que se ve, felicitaciones: con éxito ha configurado un parámetro de ruta dinámica!

Enviar una Solicitud POST

Hasta ahora, todo lo que hemos estado haciendo ha utilizado las solicitudes GET. Estas solicitudes son seguras, lo que significa que no alteran el estado del servidor. Simplemente hemos estado viendo datos JSON.

Ahora vamos a empezar a realizar la API verdaderamente dinámico mediante una solicitud POST para añadir nuevos datos.

He mencionado anteriormente en el artículo de resto de comprensión que no utiliza verbos como añadir o eliminar en la URL para realizar acciones. Para agregar un nuevo usuario a la base de datos, POST a la misma URL verlos desde, pero acaba de programar una ruta separada para él.

Tenga en cuenta que estamos usando app.post() en lugar de app.get() ahora.

Ya que estamos creando en vez de leer, vamos a usar una consulta INSERT, tanto como lo hicimos en la inicialización de la base de datos. Se entregará el request.body todo a través de la consulta SQL.

También vamos a especificar el estado de la respuesta como 201, que significa Creado. Con el fin de obtener el id del último elemento insertado, utilizaremos la propiedad insertId.

Nuestro POST entero al recibir código tendrá el siguiente aspecto.

Ahora podemos enviar una solicitud POST a través de. Mayoría de las veces cuando usted envía una solicitud POST, lo hace a través de un formulario web. Aprenderemos cómo configurar que al final de este artículo, pero la manera más fácil y rápida de enviar una prueba POST con cURL, uso de la -d(--data) bandera.

Ejecutamos curl -d, seguido de una cadena de consulta que contiene todos los pares clave/valor y el punto final de la solicitud.

Una vez que usted envíe esta solicitud a través de, usted debe obtener una respuesta del servidor.

Si usted accede a http://localhost/users, verás la entrada más reciente agregada a la lista.

Enviando una Solicitud PUT

POST es útil para añadir un nuevo usuario, pero te queremos utilizar PUT para modificar un usuario existente. PUT es idempotent, significado puede enviar la misma petición a través de varias veces y se realizará una única acción. Esto es diferente de POST, porque si enviamos nuestra solicitud de usuario nuevo a través de más de una vez, seguir creando nuevos usuarios.

Para nuestra API, vamos a configurar PUT para poder manejar la edición de un solo usuario, por lo que vamos a utilizar el parámetro de ruta :id esta vez.

Vamos a crear una consulta de UPDATE y asegúrese de que sólo se aplica a la identificación requerida con la cláusula WHERE. Estamos usando dos ? marcadores de posición y los valores que pase irá en orden secuencial.

Para nuestra prueba, nosotros editar usuario 2 y actualizar la dirección de correo electrónico desde gilfoyle@piedpiper.com a bertram@piedpiper.com. Podemos utilizar rizos otra vez, con la bandera [-X (--request)], para especificar explícitamente que estamos enviando una solicitud de puesto a través.

Asegúrese de reiniciar el servidor antes de enviar la solicitud, o bien obtendrá el error de Cannot PUT /users/2.

Usted debe ver esto:

Ahora deben actualizarse los datos del usuario con id 2.

Enviar una solicitud de DELETE

Nuestra última tarea para completar la funcionalidad CRUD de la API es una opción para borrar un usuario de la base de datos. Esta solicitud utilice la consulta SQL DELETE con WHERE, y eliminará un usuario individual especificado por un parámetro de ruta.

Podemos usar -X otra vez con el enrollamiento para enviar la cancelación a través de. Vamos a eliminar el usuario más reciente que hemos creado.

Usted verá el mensaje de éxito.

Vaya a http://localhost:3002 y verás que ahora hay sólo dos usuarios.

¡Felicidades! En este punto, la API es completa. Visitar el repositorio de GitHub para ver el código completo de routes.js.

Enviar las solicitudes a través del módulo request.

Al principio de este artículo, instalamos las dependencias de cuatro, y uno de ellos fue el módulo de request. En lugar de utilizar peticiones de enrollamiento, podría hacer un nuevo archivo con todos los datos y enviarlo a través de. Crearé un archivo llamado post.js que va a crear un nuevo usuario vía POST.

Podemos llamar a esto usando node post.js en una nueva ventana de terminal, mientras el servidor está funcionando, y tendrá el mismo efecto que usando cURL. Si algo no está funcionando con el enrollamiento, el módulo de request es útil como podemos ver el error, la respuesta y el cuerpo.

Envío de Solicitudes a Través del Formulario Web

Por lo general, POST y demás métodos de HTTP que alteran el estado del servidor se envían utilizando formularios HTML. En este ejemplo muy sencillo, podemos crear un archivo index.html en cualquier lugar y hacer un campo para un nombre y correo electrónico. Acción del formulario apuntará al recurso, en este caso http//localhost:3002/users y a especificar el método como post.

Crear el index.html y agregue el código siguiente a él:

Abra este archivo HTML estático en su navegador, llene hacia fuera y enviar mientras el servidor se ejecuta en el terminal. Usted debe ver la respuesta de User added with ID: 4,y usted debe ser capaz de ver la nueva lista de usuarios.

Conclusión

En este tutorial hemos aprendido cómo conectar un servidor Express a una base de datos MySQL y establecido rutas que corresponden a la GET, POST, PUT y DELETE métodos de trazados y parámetros de ruta dinámica. También hemos aprendido cómo enviar peticiones HTTP a un servidor de la API mediante enrollamiento, el módulo request de Node.js y formularios HTML.

En este punto, usted debe tener una muy buena comprensión de cómo funcionan las APIs RESTful, y ahora puede crear su propio API de pleno derecho en Node.js con Express y MySQL!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.