Зв'язок і передача даних між інтерфейсом і серверною базою будь-якої програми відбувається через 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.
Оновлення локальних сховищ.
[захищено електронною поштою]: ~ $ 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 для цієї єдиної схеми. Крім того, ми визначили від трьох до чотирьох методів для схеми. Ви можете створити більше одного запиту або мутації відповідно до вашої програми.