SõlmJS

Sissejuhatus GraphQL API-de ja rakenduste loomiseks sõlmes.js

Sissejuhatus GraphQL API-de ja rakenduste loomiseks sõlmes.js

Suhtlus ja andmeedastus mis tahes rakenduse kasutajaliidese ja taustaprogrammi vahel toimub API-de kaudu (Application Programming Interface). Esi- ja tagarakenduste vahel suhtlemiseks kasutatakse palju erinevaid API-sid, näiteks RESTful API, SOAP API, GraphQL API jne. GraphQL API on suhteliselt uus tehnoloogia ja see on palju kiirem kui muud tüüpi API-d. Andmete hankimine andmebaasist GraphQL api abil on palju kiirem kui REST API. GraphQL API kasutamise ajal on kliendil kõigi üksikasjade hankimise asemel kontroll ainult vajalike andmete toomiseks; sellepärast töötab GraphQL API kiiremini kui REST API.

Pakettide installimine

Ehitame sõlme.js rakendus, mis kasutab GraphQL API-d, seega peame installima sõlme.js ja npm selleks enne projekti alustamist.

[meiliga kaitstud]: ~ $ sudo apt-get update -y
[meiliga kaitstud]: ~ $ sudo apt-get install nodejs
[meiliga kaitstud]: ~ $ sudo apt-get install npm

Projekti seadistamine

Kasutame sõlme raamistikku 'express'.js meie rakenduse ehitamiseks. Looge kataloog nimega 'graphql' ja algatage projekt.

[meiliga kaitstud]: ~ $ mkdir graphql
[meiliga kaitstud]: ~ $ cd graphql /
[meiliga kaitstud]: ~ $ npm init -y

MongoDB seadistamine

Meie GraphQL projektis kasutame oma andmebaasina MongoDB-d. MongoDB on skeemivaba andmebaas ja salvestab andmeid võtmepaaride kujul. MongoDB installimiseks toimige järgmiselt.

Importige MongoDB jaoks avalik GPG-võti.

[meiliga kaitstud]: ~ $ wget -qO - https: // www.mongodb.org / staatiline / pgp / server-4.4.tõus | sudo apt-võti lisada -


Looge mongodbi loendifail.

[meiliga kaitstud]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 multiversumi "| sudo tee / etc / apt / sources.nimekirja.d / mongodb-org-4.4.nimekirja

Värskendage kohalikke hoidlaid.

[meiliga kaitstud]: ~ $ sudo apt-get update -y

Installige mongodbi pakett.

[meiliga kaitstud]: ~ $ sudo apt-get install -y mongodb-org

Käivitage ja lubage mongood.teenus.

[meiliga kaitstud]: ~ $ sudo systemctl start mongod.teenus
[meiliga kaitstud]: ~ $ sudo systemctl mongodi lubamine.teenus

Npm moodulite installimine

Meie GraphQL-i rakenduse jaoks peame installima mõned npm paketid. Paigaldame korvid, ekspress-, body-parser, mongoose jne.

[kaitstud meiliga]: ~ $ cd graphql /
[meiliga kaitstud]: ~ $ npm install cors express body-parser mongoose - save

GraphQL api loomiseks peame installima täiendava npm paketi nimega 'apollo-server-express.'Seda npm paketti kasutatakse graphQL-serveri käitamiseks kogu sõlme abil.js HTTP raamistikud nagu 'express."

[meiliga kaitstud]: ~ $ npm installige apollo-server-express --save

MongoDB skeemi määratlemine

Nüüd oleme oma keskkonnas seadistanud oma GraphQL-i rakenduse Node'is.js ja on aeg määratleda meie rakenduse skeem. Looge fail 'mudelid / õpilane.js 'projekti juurkataloogis.

// õpilase skeemi määratlemine
const mongoose = nõudma ('mongoose');
const studentSchema = uus mangust.Skeem (
nimi:
tüüp: String,
nõutav: tõene
,
klass:
tüüp: arv,
nõutav: tõsi
,
major:
tüüp: String,
nõutav: tõene

,
ajatemplid: tõsi
);
const Õpilane = mongoose.mudel ('Tudeng', studentSchema);
moodul.eksport = Student, studentSchema

Eespool määratletud skeemis peab igal õpilasel olema nimi, klass ja eriala.

GraphQL API loomine

Pärast üliõpilaste skeemi loomist ehitame nüüd GraphQL API. Looge skeem.js 'GraphQL-i parameetrite kirjutamiseks. GraphQL API-s kasutatakse kahte parameetrit, "tüübid" ja "lahendajad". „Tüüpides” täpsustame oma skeemi, päringud (nt.g., GET-taotluste esitamine) ja mutatsioonid (e.g., UPDATE või DELETE taotluste tegemine) määratud skeemile. Kirjutame „tüüpides” määratletud erinevad meetodid päringute ja mutatsioonide linkimiseks andmebaasi „resolvers”."

// skeemi ja mooduli importimine
const gql = nõudma ('apollo-server-express');
const Õpilane = nõuda ('./ mudelid / õpilane ').Üliõpilane;
// Skeemi, päringu ja mutatsiooni tüübi määratlemine
const tüüpDefs = gql '
tüüp õpilane
ma tegin!,
nimi: String!,
klass: Int!,
major: keelpill!

sisestage päring
getStudents: [üliõpilane],
getStudentById (id: ID!): Õpilane

tüüp Mutatsioon
addStudent (nimi: String!, klass: Int!, major: keelpill! ): Õpilane
updateStudent (nimi: String!, klass: Int!, major: keelpill! ): Õpilane
deleteStudent (id: ID! ): Õpilane
'
// Lahendajate määratlemine
const resolvers =
Päring:
getStudents: (vanem, argumendid) =>
tagasi õpilane.leidma ();
,
getStudentById: (vanem, args) =>
tagasi õpilane.findById (arg.id);

,
Mutatsioon:
addStudent: (vanem, args) =>
olgu õpilane = uus õpilane (
nimi: args.nimi,
klass: arg.klass,
major: arg.major
);
tagasipöörduv õpilane.salvesta ();
,
updateStudent: (vanem, args) =>
kui (!vaidleb vastu.id) tagasipöördumine;
tagasi õpilane.findOneAndUpdate (
_id: argumendid.id
,

$ set:
nimi: args.nimi,
klass: arg.klass,
major: arg.major

,
uus: tõsi, (viga, õpilane) =>
kui (eksima)
konsool.logi (eksima);
muu ;
)



moodul.eksport =
typeDefs,
resolverid

GraphQL API serveri loomine

Nüüd oleme peaaegu valmis GraphQL-i rakenduse loomisega. Ainus samm on serveri loomine. Looge fail nimega 'rakendus.js 'serveri parameetrite konfigureerimiseks.

// vajalike pakettide importimine
const väljendada = nõuda ('väljendada');
const mongoose = nõudma ('mongoose');
const bodyParser = nõuda ('body-parser');
const cors = vaja ('cors');
const ApolloServer = nõuda ('apollo-server-express');
// skeemi importimine
const typeDefs, resolvers = nõuda ('./ skeem ');
// ühendamine MongoDB-ga
const url = “mongodb: // 127.0.0.1: 27017 / õpilased ”;
const ühendama = mongoose.connect (url, useNewUrlParser: true);
ühendada.siis ((db) =>
konsool.log ('Ühendus õnnestus');
, (eksinud) =>
konsool.logi (eksima);
);
// serveri loomine
const server = uus ApolloServer (
typeDefs: typeDefs,
lahendajad: lahendajad
);
const rakendus = ekspress ();
rakendus.kasutamine (bodyParser.json ());
rakendus.use ('*', cors ());
server.ApplyMiddleware (app);
rakendus.kuula (8000, () =>

konsool.logi ('8000 kuulamine');
)

GraphQL API testimine

Meie graphQL-server töötab ja töötab pordil 8000 ja on aeg GraphQL-i API-d testida. Avage brauseris GraphQL-i veebileht, külastades järgmist URL-i.

http: // localhost: 8000 / graphql

Ja see avab järgmise veebilehe.


Lisage õpilane andmebaasi, kasutades graphQL API-d.


Samamoodi lisage veel õpilasi ja pärast õpilase lisamist laske kõik õpilased kasutada GraphQL API-d.


Pange tähele kõigi õpilaste ID-sid ja hankige konkreetne õpilane selle ID-d kasutades.

Järeldus

Andmete hankimine andmebaasist tavalise REST API abil muudab päringu aeglaseks, kuna mõnikord saame rohkem andmeid kui vaja. Kasutades GraphQL-i, saame tuua täpselt vajalikud andmed, mis muudavad GraphQL-i API kiiremaks. Selles demoprojektis on meil ainult üks skeem, seega oleme selle ühe skeemi jaoks loonud GraphQL API. Samuti oleme skeemi jaoks määranud kolm kuni neli meetodit. Vastavalt teie rakendusele saate luua mitu päringut või mutatsioone.

OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...