NestJS:n GraphQL-määritys
Määrittäkää NestJS tarjoamaan GraphQL-rajapinta ja valitkaa code-first- ja schema-first-lähestymistapojen välillä.
NestJS:n GraphQL-määritys on ilmainen NestJS-yritysbackendien API:t-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu NestJS-yritysbackendien API:t-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. NestJS-yritysbackendien API:t-kurssilla on yhteensä 3 oppituntia.
GraphQL:n käyttöönotto
Hei! Tässä oppitunnissa opitte integroimaan GraphQL:n NestJS-sovellukseenne. Käymme läpi käyttöönoton tärkeimmät vaiheet ja tutustumme kahteen pääasialliseen lähestymistapaan:
- Schema-First: Rajapinnan määrittäminen GraphQL Schema Definition Language (SDL) -kielellä.
- Code-First: Skeeman rakentaminen suoraan TypeScript-luokista ja koristelijoista.
Oppitunnin lopussa osaatte valita projektiinne parhaiten sopivan lähestymistavan ja käynnistää yksinkertaisen GraphQL-palvelimen!
GraphQL-riippuvuuksien asentaminen
Ennen koodin kirjoittamista meidän on asennettava tarvittavat paketit. NestJS käyttää pakettia @nestjs/graphql yhdessä taustalla toimivan GraphQL-kirjaston, kuten Apollon, kanssa.
Avatkaa pääte ja suorittakaa seuraava komento tarvittavien pakettien lisäämiseksi:
npm install @nestjs/graphql @nestjs/apollo graphqlgraphql on GraphQL:n ydinkirjasto, ja @nestjs/apollo tarjoaa Apollo-palvelinintegraation.
GraphQLModule-moduulin määrittäminen
NestJS:n GraphQL-toteutuksen keskiössä on GraphQLModule. Se on tuotava juurimoduuliin (yleensä AppModule) ja määritettävä siellä. Tässä on perusasetukset:
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver, // Use Apollo for GraphQL server
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
// main.ts (entry point for NestJS)
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
console.log('GraphQL server ready on http://localhost:3000/graphql');
}
bootstrap();Schema-First: suunnittelu SDL:llä
Schema-First-lähestymistavassa GraphQL-skeema määritetään ensin Schema Definition Language (SDL) -kielellä. Se toimii rajapinnan pohjapiirroksena.
- Kirjoitatte tyypit, kyselyt ja mutaatiot
.graphql- tai.gql-tiedostoon. - NestJS käyttää sitten tätä tiedostoa rajapinnan rakenteen ymmärtämiseen.
- Myöhemmin yhdistätte nämä skeeman määritykset varsinaiseen tietojenkäsittelylogiikkaan (resolvereihin).
Schema-First: esimerkki perustyypistä
Määritetään yksinkertainen Author-tyyppi SDL-tiedostossa. Tämä tiedosto kuvaa tietorakenteen ilman toteutuksen yksityiskohtia.
// src/graphql.schema.gql
type Author {
id: ID!
firstName: String
lastName: String
}
type Query {
authors: [Author!]!
author(id: ID!): Author
}Schema-First: skeeman yhdistäminen moduuliin
Jotta NestJS tunnistaa SDL-tiedoston, määritätte GraphQLModule-moduulin osoittamaan siihen. Näin NestJS tietää, mistä skeeman määritys löytyy.
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
typePaths: ['./**/*.gql'], // Tells NestJS where to find .gql files
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
// main.ts (entry point for NestJS)
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
console.log('GraphQL server ready on http://localhost:3000/graphql');
}
bootstrap();Code-First: TypeScriptin taika
Code-First-lähestymistavassa GraphQL-skeema määritetään TypeScript-koristelijoiden avulla. SDL:n kirjoittamisen sijaan määritätte luokkia, jotka NestJS muuntaa automaattisesti GraphQL-skeemaksi.
- Käytätte TypeScript-luokissa koristelijoita, kuten
@ObjectType()ja@Field(). - Tämä lähestymistapa tarjoaa vahvan tyyppiturvallisuuden ja erinomaisen IDE-tuen.
- Se vähentää päällekkäisyyttä, koska TypeScript-tyypit määrittävät GraphQL-skeeman suoraan.
Code-First: objektityypin luominen
Näin määritätte saman Author-tyypin Code-First-lähestymistavalla. Huomatkaa @ObjectType- ja @Field-koristelijoiden käyttö.
// src/authors/models/author.model.ts
import { Field, ID, ObjectType } from '@nestjs/graphql';
@ObjectType()
export class Author {
@Field(type => ID) // Explicitly define GraphQL type
id: number;
@Field({ nullable: true }) // Field can be null
firstName?: string;
@Field({ nullable: true })
lastName?: string;
}Code-First: skeeman automaattinen luominen
Code-First-lähestymistavassa GraphQLModule luo skeeman automaattisesti etsimällä projektista luokkia, jotka on koristeltu esimerkiksi koristelijoilla @ObjectType() ja @InputType().
Teidän tarvitsee vain ilmoittaa, minne luotu skeematiedosto tallennetaan (valinnaista, mutta hyödyllistä tarkastelua varten).
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
autoSchemaFile: 'src/schema.gql', // Path to save the generated schema
sortSchema: true, // Optional: keeps schema consistent
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
// main.ts (entry point for NestJS)
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
console.log('GraphQL server ready on http://localhost:3000/graphql');
}
bootstrap();Schema-First vai Code-First
Molemmat lähestymistavat ovat käyttökelpoisia, ja valinta riippuu usein tiimin mieltymyksistä ja projektin tarpeista:
- Schema-First: Sopii hyvin rajapinnan suunnitteluun yhdessä. Skeema toimii ainoana totuuden lähteenä, joten käyttöliittymätiimit voivat alkaa käyttää rajapintaa jo varhaisessa vaiheessa.
- Code-First: TypeScript-kehittäjät suosivat tätä vahvan tyyppiturvallisuuden, vähäisemmän kontekstin vaihtamisen ja pienemmän skeeman ja koodin välisen päällekkäisyyden vuoksi. Se tuntuu NestJS:lle luontevammalta.
NestJS tukee molempia, joten voitte valita projektiinne parhaiten sopivan vaihtoehdon!
Testaa ymmärryksesi
Testataan tietonne GraphQL:n määrittämisestä NestJS:ssä.
Oppitunnin yhteenveto
Hienoa! Olette oppineet GraphQL-rajapinnan määrittämisen perusvaiheet NestJS:ssä.
- Asensimme tarvittavat paketit
@nestjs/graphqlja@nestjs/apollo. - Näitte, kuinka
GraphQLModuleintegroidaan ja määritetäänAppModule-moduulissa. - Tutustuimme sekä Schema-First-lähestymistapaan (SDL-tiedostojen käyttö) että Code-First-lähestymistapaan (TypeScript-koristelijoiden käyttö).
Teillä on nyt perusta, jonka avulla voitte valita ja toteuttaa haluamanne GraphQL-asetukset NestJS:ssä!
Opi TypeScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 20
- Oppitunnit
- 76
Usein kysytyt kysymykset
Onko oppitunti ”NestJS:n GraphQL-määritys” ilmainen?
Kyllä – oppitunnin ”NestJS:n GraphQL-määritys” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko NestJS-yritysbackendien API:t-kurssin, päivitä CoddyKit PROhon. NestJS-yritysbackendien API:t-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”NestJS:n GraphQL-määritys”?
Määrittäkää NestJS tarjoamaan GraphQL-rajapinta ja valitkaa code-first- ja schema-first-lähestymistapojen välillä. Harjoittelet NestJS-yritysbackendien API:t-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni NestJS-yritysbackendien API:t-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin NestJS-yritysbackendien API:t-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.
Kuinka kauan ”NestJS:n GraphQL-määritys”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä NestJS-yritysbackendien API:t-oppitunnilla?
Kyllä. Jokainen NestJS-yritysbackendien API:t-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- GraphQL:n perusteet
- NestJS:n GraphQL-määritys
- Resolverit ja tilaukset