NodeJS

Introducción a la creación de aplicaciones y API GraphQL en Node.js

Introducción a la creación de aplicaciones y API GraphQL en Node.js

La comunicación y la transferencia de datos entre el front-end y el back-end de cualquier aplicación se produce a través de API (interfaz de programación de aplicaciones). Hay muchos tipos diferentes de API que se utilizan para comunicarse entre las aplicaciones de front-end y back-end, como RESTful API, SOAP API, GraphQL API, etc. La API GraphQL es una tecnología relativamente nueva y es mucho más rápida que otros tipos de API disponibles. Obtener datos de la base de datos usando la API GraphQL es mucho más rápido que la API REST. Mientras usa la API GraphQL, el cliente tiene control para obtener solo los datos requeridos en lugar de obtener todos los detalles; es por eso que GraphQL API funciona más rápido que REST API.

Instalación de paquetes

Construiremos un nodo.js usando la API GraphQL, por lo que necesitamos instalar el nodo.js y npm para esto antes de comenzar el proyecto.

[correo electrónico protegido]: ~ $ sudo apt-get update -y
[correo electrónico protegido]: ~ $ sudo apt-get install nodejs
[correo electrónico protegido]: ~ $ sudo apt-get install npm

Configuración del proyecto

Usaremos el marco 'express' del nodo.js para construir nuestra aplicación. Cree un directorio llamado 'graphql' e inicie el proyecto.

[correo electrónico protegido]: ~ $ mkdir graphql
[correo electrónico protegido]: ~ $ cd graphql /
[correo electrónico protegido]: ~ $ npm init -y

Configuración de MongoDB

En nuestro proyecto GraphQL, usaremos MongoDB como nuestra base de datos. MongoDB es una base de datos sin esquema y almacena datos en forma de pares de claves. Para instalar mongoDB, siga los pasos dados.

Importar la clave GPG pública para MongoDB.

[correo electrónico protegido]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.asc | sudo apt-key add -


Crea el archivo de lista para mongodb.

[correo electrónico protegido]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 multiverso "| sudo tee / etc / apt / sources.lista.d / mongodb-org-4.4.lista

Actualizar repositorios locales.

[correo electrónico protegido]: ~ $ sudo apt-get update -y

Instalar el paquete mongodb.

[correo electrónico protegido]: ~ $ sudo apt-get install -y mongodb-org

Iniciar y habilitar mongod.Servicio.

[correo electrónico protegido]: ~ $ sudo systemctl start mongod.Servicio
[correo electrónico protegido]: ~ $ sudo systemctl enable mongod.Servicio

Instalación de módulos npm

Para nuestra aplicación GraphQL, necesitamos instalar algunos paquetes npm. Instalaremos cors, express, body-parser, mangosta, etc.

[correo electrónico protegido]: ~ $ cd graphql /
[email protected]: ~ $ npm instalar cors express body-parser mongoose --save

Para crear una api GraphQL, necesitamos instalar un paquete npm adicional llamado 'apollo-server-express.'Este paquete npm se utiliza para ejecutar el servidor GraphQL con todos los Node.js marcos HTTP como 'express.'

[correo electrónico protegido]: ~ $ npm install apollo-server-express --save

Definición del esquema de MongoDB

Ahora tenemos nuestro entorno configurado para nuestra aplicación GraphQL en Node.js, y es hora de definir un esquema para nuestra aplicación. Crear un archivo 'modelos / alumno.js 'en el directorio raíz del proyecto.

// definir el esquema del estudiante
const mangosta = require ('mangosta');
const studentSchema = nueva mangosta.Esquema(
nombre:
tipo: Cadena,
requerido: verdadero
,
clase:
teclea un número,
requerido: verdadero
,
importante:
tipo: Cadena,
requerido: verdadero

,
marcas de tiempo: verdadero
);
const Student = mangosta.modelo ('Student', studentSchema);
módulo.exportaciones = Student, studentSchema

En el esquema definido anteriormente, cada estudiante debe tener un nombre, una clase y una especialización.

Construyendo API GraphQL

Después de crear el esquema del estudiante, ahora crearemos la API GraphQL. Crea un 'esquema.js 'para escribir parámetros GraphQL. Hay dos parámetros, 'tipos' y 'resolutores', que se utilizan en la API GraphQL. En 'tipos' especificaremos nuestro esquema, las consultas (e.gramo., Realización de solicitudes GET) y mutaciones (e.gramo., Realización de solicitudes UPDATE o DELETE) al esquema especificado. Escribiremos los diferentes métodos definidos en 'tipos' para vincular las consultas y mutaciones con la base de datos en 'resolvers.'

// importando esquema y módulo
const gql = require ('apollo-server-express');
const Student = require ('./ modelos / estudiante ').Estudiante;
// Definición de esquema, consulta y tipo de mutación
const typeDefs = gql '
type Student
yo hice!,
nombre: String!,
clase: Int!,
mayor: String!

type Query
getStudents: [Estudiante],
getStudentById (id: ID!): Estudiante

type Mutation
addStudent (nombre: String!, clase: Int!, mayor: String! ): Estudiante
updateStudent (nombre: String!, clase: Int!, mayor: String! ): Estudiante
deleteStudent (id: ID! ): Estudiante
'
// Definición de Resolvers
const resolvers =
Consulta:
getStudents: (padre, argumentos) =>
estudiante de regreso.encontrar();
,
getStudentById: (padre, argumentos) =>
estudiante de regreso.findById (args.identificación);

,
Mutación:
addStudent: (padre, argumentos) =>
let student = new Student (
nombre: args.nombre,
clase: argumentos.clase,
mayor: argumentos.importante
);
estudiante de regreso.ahorrar();
,
updateStudent: (padre, argumentos) =>
Si(!argumentos.id) retorno;
estudiante de regreso.findOneAndUpdate (
_id: argumentos.identificación
,

$ conjunto:
nombre: args.nombre,
clase: argumentos.clase,
mayor: argumentos.importante

,
nuevo: verdadero, (err, Estudiante) =>
si (err)
consola.log (err);
demás ;
)



módulo.exportaciones =
typeDefs,
resolutores

Creación del servidor API GraphQL

Ahora casi hemos terminado de crear la aplicación GraphQL. El único paso que queda es crear el servidor. Crea un archivo llamado 'aplicación.js 'para configurar los parámetros del servidor.

// importando paquetes requeridos
const express = require ('express');
const mangosta = require ('mangosta');
const bodyParser = require ('body-parser');
const cors = require ('cors');
const ApolloServer = require ('apollo-server-express');
// esquema de importación
const typeDefs, resolvers = require ('./esquema');
// conectándose a MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / estudiantes ”;
conexión constante = mangosta.connect (url, useNewUrlParser: true);
conectar.entonces ((db) =>
consola.log ('Conexión exitosa');
, (err) =>
consola.log (err);
);
// creando servidor
const server = new ApolloServer (
typeDefs: typeDefs,
resolutores: resolutores
);
aplicación constante = express ();
aplicación.use (bodyParser.json ());
aplicación.use ('*', cors ());
servidor.applyMiddleware (aplicación);
aplicación.escuchar (8000, () =>

consola.log ('escuchando 8000');
)

Prueba de la API GraphQL

Tenemos nuestro servidor GraphQL en funcionamiento en el puerto 8000, y es hora de probar la API GraphQL. Abra la página web GraphQL en el navegador visitando la siguiente URL.

http: // localhost: 8000 / graphql

Y abrirá la siguiente página web.


Agregue al estudiante a la base de datos usando GraphQL API.


De manera similar, agregue más estudiantes y, después de agregar al estudiante, obtenga todos los estudiantes que usen GraphQL API.


Anote la identificación de cualquiera de los estudiantes y obtenga el estudiante específico usando su identificación.

Conclusión

Obtener datos de la base de datos usando la API REST estándar hace que la consulta sea lenta ya que a veces obtenemos más datos de los requeridos. Usando GraphQL, podemos obtener exactamente los datos requeridos que hacen que la API GraphQL sea más rápida. En este proyecto de demostración, solo tenemos un esquema único, por lo que hemos creado la API GraphQL para ese esquema único. Además, hemos definido de tres a cuatro métodos para el esquema. Puede crear más de una consulta o mutaciones según su aplicación.

Cómo usar GameConqueror Cheat Engine en Linux
El artículo cubre una guía sobre el uso del motor de trucos GameConqueror en Linux. Muchos usuarios que juegan juegos en Windows a menudo usan la apli...
Los mejores emuladores de consola de juegos para Linux
Este artículo enumerará el software de emulación de consola de juegos más popular disponible para Linux. La emulación es una capa de compatibilidad de...
Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...