NodeJS

Вступ до створення API і програм GraphQL у Node.js

Вступ до створення API і програм GraphQL у Node.js

Зв'язок і передача даних між інтерфейсом і серверною базою будь-якої програми відбувається через API (інтерфейс програмування програм). Існує багато різних типів API, які використовуються для спілкування між інтерфейсними та внутрішніми програмами, такими як RESTful API, SOAP API, API GraphQL тощо. API GraphQL - відносно нова технологія, і вона набагато швидша, ніж інші типи доступних API. Отримання даних із бази даних за допомогою API GraphQL набагато швидше, ніж REST API. Використовуючи API GraphQL, клієнт має контроль над тим, щоб отримувати лише необхідні дані, а не отримувати всі деталі; тому GraphQL API працює швидше, ніж REST API.

Встановлення пакетів

Ми побудуємо вузол.js, використовуючи API GraphQL, тому нам потрібно встановити node.js та npm для цього перед початком проекту.

[захищено електронною поштою]: ~ $ sudo apt-get update -y
[захищено електронною поштою]: ~ $ sudo apt-get install nodejs
[захищено електронною поштою]: ~ $ sudo apt-get install npm

Налаштування проекту

Ми будемо використовувати фреймворк 'express' з вузла.js для створення нашого додатка. Створіть каталог із назвою 'graphql' та ініціюйте проект.

[захищено електронною поштою]: ~ $ mkdir graphql
[захищено електронною поштою]: ~ $ cd graphql /
[захищено електронною поштою]: ~ $ npm init -y

Налаштування MongoDB

У нашому проекті GraphQL ми використовуватимемо MongoDB як базу даних. MongoDB - це безсхемна база даних, яка зберігає дані у формі пар ключів. Для того, щоб встановити mongoDB, виконайте наведені нижче дії.

Імпортуйте відкритий ключ GPG для MongoDB.

[захищено електронною поштою]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.asc | sudo apt-key add -


Створіть файл списку для mongodb.

[захищено електронною поштою]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 мультивселенна "| sudo tee / etc / apt / sources.список.г / монгодб-орг-4.4.список

Оновлення локальних сховищ.

[захищено електронною поштою]: ~ $ sudo apt-get update -y

Встановіть пакет mongodb.

[захищено електронною поштою]: ~ $ sudo apt-get install -y mongodb-org

Запустіть і ввімкніть mongod.обслуговування.

[захищено електронною поштою]: ~ $ sudo systemctl запустити mongod.обслуговування
[захищено електронною поштою]: ~ $ sudo systemctl увімкнути mongod.обслуговування

Встановлення модулів npm

Для нашого додатку GraphQL нам потрібно встановити деякі пакети npm. Ми встановимо корси, експрес, парсер, мангуст тощо.

[захищено електронною поштою]: ~ $ cd graphql /
[захищено електронною поштою]: ~ $ npm встановити cors express body-parser mongoose --save

Для створення API GraphQL нам потрібно встановити додатковий пакет npm з назвою 'apollo-server-express.'Цей пакет npm використовується для запуску сервера graphQL з усіма Node.js HTTP-фреймворки, такі як 'express.'

[захищено електронною поштою]: ~ $ npm встановити apollo-server-express --save

Визначення схеми MongoDB

Тепер у нас налаштовано середовище для нашої програми GraphQL у Node.js, і настав час визначити схему для нашого додатку. Створіть файл 'models / student.js 'у кореневому каталозі проекту.

// визначення схеми студента
const мангуст = вимагати ('мангуст');
const studentSchema = новий мангуст.Схема (
ім'я:
тип: Рядок,
обов'язково: правда
,
клас:
тип: Номер,
обов'язково: правда
,
спеціальність:
тип: Рядок,
обов'язково: правда

,
позначки часу: true
);
const Студент = мангуст.модель ('Student', studentSchema);
модуль.export = Student, studentSchema

У визначеній вище схемі кожен студент повинен мати ім’я, клас та спеціальність.

Побудова API GraphQL

Після створення схеми Студента ми тепер створимо API GraphQL. Створіть схему.js 'для запису параметрів GraphQL. У GraphQL API використовуються два параметри - «типи» та «вирішувачі». У "типи" ми будемо вказувати нашу схему, запити (наприклад,.g., Внесення запитів GET) та мутації (наприклад,.g., Виконання запитів UPDATE або DELETE) до вказаної схеми. Ми напишемо різні методи, визначені в 'типи', щоб зв'язати запити та мутації з базою даних у 'розв'язувачах.'

// імпорт схеми та модуля
const gql = require ('apollo-server-express');
const Student = require ('./ моделі / студент ').Студент;
// Визначення схеми, запиту та типу мутації
const typeDefs = gql '
тип Студент
я робив!,
назва: Рядок!,
клас: Міжнар!,
спеціальність: Струнна!

введіть запит
getStudents: [Студент],
getStudentById (id: ID!): Студент

мутація типу
addStudent (ім'я: рядок!, клас: Міжнар!, спеціальність: Струнна! ): Студент
updateStudent (ім'я: рядок!, клас: Міжнар!, спеціальність: Струнна! ): Студент
deleteStudent (id: ID! ): Студент
'
// Визначення вирішувачів
розв'язувачі const =
Запит:
getStudents: (батьківський, аргументи) =>
повернення Студент.знайти ();
,
getStudentById: (батьківський, аргументи) =>
повернення Студент.findById (args.id);

,
Мутація:
addStudent: (батьківський, аргументи) =>
нехай студент = новий студент (
назва: аргументи.ім'я,
клас: аргументи.клас,
спеціальність: аргументи.майор
);
повернення студента.зберегти ();
,
updateStudent: (батьківський, аргументи) =>
якщо (!аргументи.id) повернення;
повернення Студент.findOneAndUpdate (
_id: аргументи.ідентифікатор
,

$ set:
назва: аргументи.ім'я,
клас: аргументи.клас,
спеціальність: аргументи.майор

,
new: true, (помилка, студент) =>
if (помилка)
консолі.журнал (помилка);
ще ;
)



модуль.експорт =
typeDefs,
вирішувачі

Створення сервера API API GraphQL

Зараз ми майже закінчили створення програми GraphQL. Залишився лише крок створення сервера. Створіть файл із назвою 'app.js 'для налаштування параметрів сервера.

// імпорт необхідних пакетів
const express = require ('express');
const мангуст = вимагати ('мангуст');
const bodyParser = require ('body-parser');
const cors = require ('cors');
const ApolloServer = вимагати ('apollo-server-express');
// схема імпорту
const typeDefs, resolvers = require ('./ схема ');
// підключення до MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / студенти ”;
const connect = мангуст.підключити (url, useNewUrlParser: true);
підключити.тоді ((db) =>
консолі.log ('Підключення вдале');
, (помилка) =>
консолі.журнал (помилка);
);
// створення сервера
const server = новий ApolloServer (
typeDefs: typeDefs,
розв'язувачі: розв'язувачі
);
const app = express ();
додаток.використання (bodyParser.json ());
додаток.use ('*', cors ());
сервер.applyMiddleware (app);
додаток.слухати (8000, () =>

консолі.журнал ('прослуховування 8000');
)

Тестування API GraphQL

У нас є сервер graphQL, який працює і працює на порту 8000, і настав час протестувати API GraphQL. Відкрийте веб-сторінку GraphQL у браузері, відвідавши наступну адресу.

http: // localhost: 8000 / graphql

І відкриється наступна веб-сторінка.


Додайте студента до бази даних за допомогою API GraphQL.


Так само додайте більше студентів, а після додавання студента отримайте всіх студентів за допомогою API GraphQL.


Зверніть увагу на ідентифікатор будь-якого студента та отримайте конкретного студента, використовуючи його ідентифікатор.

Висновок

Отримання даних із бази даних за допомогою стандартного REST API робить запит повільним, оскільки іноді ми отримуємо більше даних, ніж потрібно. Використовуючи GraphQL, ми можемо отримати точно необхідні дані, що робить API GraphQL швидшим. У цьому демонстраційному проекті ми маємо лише одну схему, тому ми створили API GraphQL для цієї єдиної схеми. Крім того, ми визначили від трьох до чотирьох методів для схеми. Ви можете створити більше одного запиту або мутації відповідно до вашої програми.

Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...
How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...
Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...