Tiedonsiirto ja tiedonsiirto minkä tahansa sovelluksen käyttöliittymän ja taustajärjestelmän välillä tapahtuu API: n (Application Programming Interface) kautta. Etu- ja loppusovellusten, kuten RESTful API: n, SOAP API: n, GraphQL API: n jne. GraphQL-sovellusliittymä on suhteellisen uusi tekniikka, ja se on paljon nopeampi kuin muun tyyppiset käytettävissä olevat sovellusliittymät. Tietojen noutaminen tietokannasta GraphQL-apin avulla on paljon nopeampaa kuin REST-sovellusliittymä. Kun hän käyttää GraphQL-sovellusliittymää, asiakkaalla on hallinto noutaa vain vaaditut tiedot kaikkien tietojen saamisen sijaan. siksi GraphQL API toimii nopeammin kuin REST API.
Pakettien asentaminen
Rakennamme solmun.js-sovellus, joka käyttää GraphQL-sovellusliittymää, joten meidän on asennettava solmu.js ja npm tähän ennen projektin aloittamista.
[sähköposti suojattu]: ~ $ sudo apt-get update -y[sähköposti suojattu]: ~ $ sudo apt-get install nodejs
[sähköposti suojattu]: ~ $ sudo apt-get install npm
Perustetaan projekti
Käytämme solmun 'express' -kehystä.js rakentaa sovelluksemme. Luo hakemisto nimeltä 'graphql' ja aloita projekti.
[sähköposti suojattu]: ~ $ mkdir graphql[sähköposti suojattu]: ~ $ cd graphql /
[sähköposti suojattu]: ~ $ npm init -y
MongoDB-asetukset
GraphQL-projektissamme käytämme MongoDB: tä tietokantaamme. MongoDB on skeemiton tietokanta, joka tallentaa tietoja avainparien muodossa. Asenna mongoDB noudattamalla annettuja ohjeita.
Tuo julkinen GPG-avain MongoDB: lle.
[sähköposti suojattu]: ~ $ wget -qO - https: // www.mongodb.org / staattinen / pgp / palvelin-4.4.asc | sudo apt-key lisää -
Luo mongodb-luettelotiedosto.
Päivitä paikalliset arkistot.
[sähköposti suojattu]: ~ $ sudo apt-get update -yAsenna mongodb-paketti.
[sähköposti suojattu]: ~ $ sudo apt-get install -y mongodb-orgKäynnistä ja ota mongodi käyttöön.palvelu.
[sähköposti suojattu]: ~ $ sudo systemctl start mongod.palvelu[sähköposti suojattu]: ~ $ sudo systemctl enable mongod.palvelu
Npm-moduulien asentaminen
GraphQL-sovelluksellemme on asennettava joitain npm-paketteja. Asennamme cors, express, body-jäsennin, mangusti jne.
[sähköposti suojattu]: ~ $ cd graphql /[sähköposti suojattu]: ~ $ npm asenna cors express body-parser mongoose --save
GraphQL-apin luomiseksi meidän on asennettava ylimääräinen npm-paketti nimeltä 'apollo-server-express.'Tätä npm-pakettia käytetään grafQL-palvelimen suorittamiseen kaikilla solmuilla.js HTTP-kehykset, kuten 'express.'
[sähköposti suojattu]: ~ $ npm asenna apollo-server-express --saveMongoDB-skeeman määrittäminen
Nyt ympäristömme on määritetty GraphQL-sovelluksellemme Node-palvelussa.js, ja on aika määritellä kaava sovelluksellemme. Luo tiedosto 'mallit / opiskelija.js 'projektin juurihakemistossa.
// opiskelijakaavion määrittelyconst mongoose = vaatia ('mongoose');
const studentSchema = uusi mangusti.Skeema (
nimi:
tyyppi: merkkijono,
vaaditaan: totta
,
luokka:
tyyppi: Numero,
vaaditaan: totta
,
suuri:
tyyppi: merkkijono,
vaaditaan: totta
,
aikaleimat: totta
);
const Opiskelija = mangusti.malli ('Opiskelija', opiskelijaskema);
moduuli.vienti = Opiskelija, opiskelijakemia
Edellä määritellyssä skeemassa jokaisella opiskelijalla on oltava nimi, luokka ja pääaine.
GraphQL-sovellusliittymän rakentaminen
Kun olet luonut Student-skeeman, rakennamme nyt GraphQL API: n. Luo 'skeema.js 'kirjoittaa GraphQL-parametreja. GraphQL-sovellusliittymässä käytetään kahta parametria, 'tyypit' ja 'resolverit'. Tyypeissä määritämme skeemamme, kyselyt (esim.g., GET-pyyntöjen tekeminen) ja mutaatiot (esim.g., Päivitys- tai POISTA-pyyntöjen tekeminen) määritettyyn malliin. Kirjoitamme eri tyyppeissä määritellyt menetelmät kyselyjen ja mutaatioiden linkittämiseksi resolvers-tietokantaan.'
// tuodaan skeema ja moduuliconst gql = vaatia ('apollo-server-express');
const Opiskelija = vaatia ('./ mallit / opiskelija ').Opiskelija;
// Määritetään skeema, kysely ja mutaatiotyyppi
const typeDefs = gql '
tyyppi Opiskelija
minä tein!,
nimi: Merkkijono!,
luokka: Int!,
majuri: Jousisoitin!
kirjoita kysely
getStudents: [Opiskelija],
getStudentById (tunnus: ID!): Opiskelija
tyyppi Mutaatio
addStudent (nimi: Merkkijono!, luokka: Int!, majuri: Jousisoitin! ): Opiskelija
updateStudent (nimi: Merkkijono!, luokka: Int!, majuri: Jousisoitin! ): Opiskelija
deleteStudent (tunnus: ID! ): Opiskelija
'
// Ratkaisijoiden määrittely
const resolvers =
Kysely:
getStudents: (vanhempi, argumentit) =>
paluu Opiskelija.löytö();
,
getStudentById: (vanhempi, argumentoi) =>
paluu Opiskelija.findById (argumentit.id);
,
Mutaatio:
addStudent: (vanhempi, argumentit) =>
anna oppilas = uusi opiskelija (
nimi: args.nimi,
luokka: argumentit.luokassa,
pääaine: arg.suuri
);
paluuopiskelija.Tallentaa();
,
updateStudent: (vanhempi, argumentoi) =>
jos(!väittää.id) paluu;
paluu Opiskelija.findOneAndUpdate (
_id: väittää.id
,
$ set:
nimi: args.nimi,
luokka: argumentit.luokassa,
pääaine: arg.suuri
,
uusi: tosi, (virhe, opiskelija) =>
jos (virhe)
konsoli.loki (virhe);
muu ;
)
moduuli.vienti =
typeDefs,
ratkaisijat
GraphQL API -palvelimen luominen
Nyt olemme melkein valmiit luomaan GraphQL-sovelluksen. Ainoa askel jäljellä on luoda palvelin. Luo tiedosto nimeltä app.js 'määrittää palvelimen parametrit.
// tuodaan vaaditut paketitconst express = vaatia ('express');
const mongoose = vaatia ('mongoose');
const bodyParser = vaatia ('body-parser');
const cors = vaativat ('cors');
const ApolloServer = vaatia ('apollo-server-express');
// tuodaan skeema
const typeDefs, resolvers = vaatia ('./ skeema ');
// yhdistetään MongoDB: hen
const url = “mongodb: // 127.0.0.1: 27017 / opiskelijat ”;
const connect = mangusti.connect (url, useNewUrlParser: true);
kytkeä.sitten ((db) =>
konsoli.loki ('Yhteys onnistui');
, (virhe) =>
konsoli.loki (virhe);
);
// palvelimen luominen
const-palvelin = uusi ApolloServer (
typeDefs: typeDefs,
resolvers: resolvers
);
const app = ilmaista ();
sovellus.käyttö (bodyParser.json ());
sovellus.käyttö ('*', cors ());
palvelin.ApplyMiddleware (app);
sovellus.kuuntele (8000, () =>
konsoli.loki ('8000 kuuntelu');
)
Testataan GraphQL-sovellusliittymää
GraphQL-palvelimemme on käynnissä ja käynnissä portissa 8000, ja on aika testata GraphQL-sovellusliittymä. Avaa selaimen GraphQL-verkkosivusto seuraavasta URL-osoitteesta.
http: // localhost: 8000 / graphql
Ja se avaa seuraavan verkkosivun.
Lisää opiskelija tietokantaan graphQL API: n avulla.
Lisää vastaavasti lisää opiskelijoita ja kun olet lisännyt opiskelijan, hanki kaikki opiskelijat GraphQL-sovellusliittymän avulla.
Huomaa minkä tahansa opiskelijan henkilötunnus ja hanki tietty opiskelija käyttämään sen tunnusta.
Johtopäätös
Tietojen hakeminen tietokannasta tavallisen REST-sovellusliittymän avulla tekee kyselyn hitaaksi, koska joskus saamme enemmän tietoa kuin vaaditaan. GraphQL: n avulla voimme noutaa tarkalleen tarvittavat tiedot, mikä tekee GraphQL-sovellusliittymästä nopeamman. Tässä demoprojektissa meillä on vain yksi skeema, joten olemme luoneet GraphQL-sovellusliittymän tälle yksittäiselle skeemalle. Olemme myös määritelleet kolmelle neljälle menetelmälle skeemalle. Voit luoda useamman kuin yhden kyselyn tai mutaation sovelluksesi mukaan.