Hej tamo! Kao dobavljač API-ja, iz prve ruke sam video kako je GraphQL postao menjač igre u svetu API-ja. U ovom blogu ću vas provesti kroz kako da kreirate GraphQL API.
Razumijevanje osnova GraphQL-a
Prvo, hajde da shvatimo šta je GraphQL. Za razliku od REST-a, koji ima fiksni skup krajnjih tačaka koje vraćaju unaprijed definirane strukture podataka, GraphQL omogućava klijentima da specificiraju tačno koje podatke trebaju. To znači manje prekomjerno ili nedovoljno dohvaćanja podataka, što je veliki plus.
Zamislite da pravite aplikaciju kojoj su potrebne korisničke informacije. Sa REST API-jem, možda imate krajnju tačku kao što je/korisnici/:idkoji vraća čitavu gomilu korisničkih podataka, od kojih neke vaša aplikacija možda neće ni koristiti. Ali sa GraphQL, klijent može poslati upit ovako:
upit { korisnik(id: "123") { ime email } }
I dobiće samoimeiemailpolja korisnika sa ID-om123.
Postavljanje okruženja
Da biste kreirali GraphQL API, trebat će vam nekoliko alata. Najpopularniji za izgradnju GraphQL servera je Apollo Server, koji odlično radi sa Node.js. Dakle, ako već niste, instalirajte Node.js na svoju mašinu.
Nakon što pokrenete Node.js, kreirajte novi direktorij za svoj projekt i idite do njega u svom terminalu. Zatim inicijalizirajte novi Node.js projekat tako što ćete pokrenuti:
npm init -y
Ovo će stvoriti apackage.jsondatoteku u direktoriju vašeg projekta.
Zatim instalirajte Apollo Server i GraphQL:
npm instaliraj apollo-server graphql
Definiranje šeme
Šema je srce GraphQL API-ja. Definira tipove podataka koje klijenti mogu ispitivati i odnose između njih.
Recimo da gradimo API za jednostavnu biblioteku. Možda imamo tipove zaBook,Autor, iŽanr. Evo kako možete definirati osnovnu šemu u JavaScript-u:
const { gql } = require('apollo-server'); const typeDefs = gql` tip Knjiga { id: ID! naslov: String! autor: Autor! žanr: Žanr! } tip Autor { id: ID! naziv: String! knjige: [Knjiga!]! } tip Žanr { id: ID! naziv: String! knjige: [Knjiga!]! } upišite upit { knjige: [Knjiga!]! knjiga(id: ID!): Autori knjige: [Autor!]! autor(id: ID!): Žanrovi autora: [Žanr!]! žanr(id: ID!): Žanr } `; module.exports = typeDefs;
U ovoj šemi definirali smo tri tipa (Book,Autor, iŽanr) i aUpittip koji omogućava klijentima da dohvate podatke. The!simbol znači da je polje obavezno.
Resolveri
Resolveri su funkcije koje govore GraphQL-u kako da dobije podatke za svako polje u šemi. Na primjer, razrješavač zaknjigepolju uUpittype može dohvatiti listu knjiga iz baze podataka.
Evo jednostavnog skupa rezolvera za naš bibliotečki API:
const { knjige, autori, žanrovi } = zahtijevaju('./data'); const resolvers = { Upit: { knjige: () => knjige, knjiga: (roditelj, { id }) => books.find(book => book.id === id), autori: () => autori, autor: (roditelj, { id }) => authors.find(author => autor.id =:= id), }) => genres.find(genre => genre.id === id) }, Knjiga: { autor: (knjiga) => authors.find(author => author.id === book.authorId), žanr: (knjiga) => genres.find(genre => genre.id === book.genre:ut) : books.filter(book => book.authorId === author.id) }, Žanr: { books: (žanr) => books.filter(book => book.genreId === genre.id) } }; module.exports = razrješači;
U ovom kodu pretpostavljamo da imamo neke uzorke podataka u adata.jsfajl. Resolveri zaUpittip vraća odgovarajuće podatke, a razrješači za druge tipove upravljaju odnosima između tipova.
Kreiranje servera
Sada kada imamo našu šemu i rezolvere, vrijeme je da kreiramo Apollo server.
const { ApolloServer } = require('apollo-server'); const typeDefs = require('./schema'); const resolvers = zahtijevaju('./resolvers'); const server = novi ApolloServer({ typeDefs, resolvers }); server.listen().then(({ url }) => { console.log(`Server spreman na ${url}`); });
Kada pokrenete ovaj kod sačvor index.js(pod pretpostavkom da je vaš fajl imenovanindex.js), server će početi raditi na lokalnom portu i možete pristupiti GraphQL igralištu na URL-u koji je odštampan u konzoli.
Testiranje API-ja
Kada se server pokrene, možete testirati svoj API koristeći GraphQL playground. Otvorite URL u svom pretraživaču i vidjet ćete sučelje gdje možete pisati upite i mutacije.
Na primjer, možete napisati upit da dobijete sve knjige:
upit { knjige { naslov autor { ime } } }
Ovaj upit će vratiti listu knjiga s njihovim naslovima i imenima njihovih autora.
Sigurnost i performanse
Prilikom kreiranja GraphQL API-ja, sigurnost i performanse su od ključne važnosti. Morate biti sigurni da klijenti mogu pristupiti samo podacima koje im je dozvoljeno vidjeti. Jedan od načina da se to uradi je implementiranje mehanizama autentifikacije i autorizacije.
Za performanse možete koristiti tehnike kao što su keširanje i batching. Apollo Server ima ugrađenu podršku za keširanje, a možete koristiti biblioteke poputučitavač podatakaza batching zahtjeve baze podataka.


Integracija sa postojećim sistemima
Kao dobavljač API-ja, možda ćete morati da integrišete svoj GraphQL API sa postojećim sistemima, kao što su baze podataka ili drugi API-ji. Možete koristiti konektore ili adaptere za interakciju sa ovim sistemima. Na primjer, ako koristite PostgreSQL bazu podataka, možete koristitistrbiblioteku da se povežete na nju i dohvatite podatke.
Zaključak
Kreiranje GraphQL API-ja je odličan način da svojim klijentima omogućite fleksibilan i efikasan pristup podacima. Prateći korake navedene u ovom blogu, možete izgraditi robustan GraphQL API koji zadovoljava potrebe vaših korisnika.
Ako ste zainteresirani za korištenje naših API usluga ili imate bilo kakva pitanja o razvoju GraphQL API-ja, slobodno nam se obratite za raspravu o nabavci. Uvijek rado razgovaramo i pomažemo vam da pronađete najbolja rješenja za vaše poslovanje.
Također nudimo API-je koji se odnose na različite industrije. Na primjer, ako ste u farmaceutskoj industriji, mogli biste biti zainteresirani za API-je povezane s proizvodima kao što suAnastrozoliGuaifenesin. Također možete provjeriti više oAnastrozolna našoj web stranici.
Reference
- Apollo serverska dokumentacija
- GraphQL specifikacija
- Node.js dokumentacija
