NodeJS

Въведение в създаването на API на GraphQL и приложения в Node.js

Въведение в създаването на API на GraphQL и приложения в Node.js

Комуникацията и трансферът на данни между предния край и бекенда на всяко приложение се осъществява чрез API (интерфейс за програмиране на приложения). Има много различни видове API, използвани за комуникация между предни и задни приложения като RESTful API, SOAP API, GraphQL API и т.н. API на GraphQL е сравнително нова технология и е много по-бърза от другите налични видове API. Извличането на данни от базата данни с помощта на GraphQL api е много по-бързо от REST API. Докато използва GraphQL API, клиентът има контрол да извлича само необходимите данни, вместо да получава всички подробности; затова 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' от node.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.списък.г / mongodb-org-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 пакети. Ще инсталираме cors, express, body-parser, мангуста и др.

[имейл защитен]: ~ $ cd graphql /
[имейл защитен]: ~ $ npm инсталиране на cors express body-parser mongoose --save

За да създадем GraphQL api, трябва да инсталираме допълнителен 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 = нов мангуст.Схема (
име:
тип: String,
задължително: вярно
,
клас:
тип: Номер,
задължително: вярно
,
специалност:
тип: String,
задължително: вярно

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

В дефинираната по-горе схема всеки ученик трябва да има име, клас и специалност.

Изграждане на API на GraphQL

След създаването на схемата Student, сега ще изградим GraphQL API. Създайте схема.js 'за запис на GraphQL параметри. В GraphQL API има два параметъра, „типове“ и „разделители“. В „типове“ ще посочим нашата схема, заявките (напр.ж., Изпращане на GET заявки) и мутации (напр.ж., Извършване на UPDATE или DELETE заявки) към посочената схема. Ще напишем различните методи, дефинирани в „типове“, за да свържем заявките и мутациите с базата данни в „разделители“.'

// импортиране на схема и модул
const gql = изискване ('apollo-server-express');
const Student = require ('./ модели / студент ').Студент;
// Определяне на схема, заявка и тип мутация
const typeDefs = gql '
тип студент
направих!,
име: низ!,
клас: Int!,
специалност: Струна!

въведете заявка
getStudents: [Студент],
getStudentById (id: ID!): Студент

type Mutation
addStudent (име: String!, клас: Int!, специалност: Струна! ): Студент
updateStudent (име: String!, клас: Int!, специалност: Струна! ): Студент
deleteStudent (id: ID! ): Студент
'
// Дефиниране на разрешители
const резолютори =
Заявка:
getStudents: (родител, аргументи) =>
връщане Студент.намирам();
,
getStudentById: (родител, аргументи) =>
връщане Студент.findById (аргументи.документ за самоличност);

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

$ set:
име: аргументи.име,
клас: аргументи.клас,
специалност: аргументи.майор

,
new: true, (грешка, студент) =>
ако (грешка)
конзола.дневник (грешка);
друго ;
)



модул.износ =
typeDefs,
разделители

Създаване на GraphQL API сървър

Сега почти приключихме със създаването на приложението 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 = изисква ('./ схема ');
// свързване към MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / ученици ”;
const connect = мангуста.свързване (url, useNewUrlParser: true);
свържете.тогава ((db) =>
конзола.log ('Връзката е успешна');
, (грешка) =>
конзола.дневник (грешка);
);
// създаване на сървър
const сървър = нов ApolloServer (
typeDefs: typeDefs,
разделители: разделители
);
const app = express ();
ап.използване (bodyParser.json ());
ап.use ('*', cors ());
сървър.applyMiddleware (приложение);
ап.слушане (8000, () =>

конзола.дневник ('слушане на 8000');
)

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

Имаме нашия GraphQL сървър работещ на порт 8000 и е време да тестваме GraphQL API. Отворете уеб страницата GraphQL в браузъра, като посетите следния URL адрес.

http: // localhost: 8000 / graphql

И ще отвори следната уеб страница.


Добавете ученика към базата данни, използвайки API на GraphQL.


По същия начин добавете още ученици и след добавянето на студента вземете всички ученици, използвайки GraphQL API.


Обърнете внимание на идентификатора на някой от студентите и вземете конкретния студент, като използвате неговия идентификатор.

Заключение

Извличането на данни от базата данни с помощта на стандартния REST API прави заявката бавна, тъй като понякога получаваме повече данни от необходимото. Използвайки GraphQL, можем да извлечем точно необходимите данни, които правят API на GraphQL по-бърз. В този демонстрационен проект имаме само една схема, така че сме създали GraphQL API за тази единична схема. Също така дефинирахме три до четири метода за схемата. Можете да създадете повече от една заявка или мутации според вашето приложение.

Как да промените левия и десния бутон на мишката на компютър с Windows 10
Напълно нормално е всички устройства на компютърни мишки да са ергономично проектирани за десничари. Но има налични устройства за мишка, които са спец...
Емулирайте кликванията на мишката, като задържите курсора на мишката с кликаща мишка в Windows 10
Използването на мишка или клавиатура в неправилна поза при прекомерна употреба може да доведе до много здравословни проблеми, включително напрежение, ...
Добавете жестове на мишката към Windows 10, като използвате тези безплатни инструменти
През последните години компютрите и операционните системи значително се развиха. Имаше време, когато потребителите трябваше да използват команди за на...