NestJS-yritysbackendien API:t · Oppitunti

NestJS:n GraphQL-määritys

Määrittäkää NestJS tarjoamaan GraphQL-rajapinta ja valitkaa code-first- ja schema-first-lähestymistapojen välillä.

Oppitunti 2/312 vaihetta

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 graphql

graphql 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/graphql ja @nestjs/apollo.
  • Näitte, kuinka GraphQLModule integroidaan ja määritetään AppModule-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ä!

Aloita maksutta

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

  1. GraphQL:n perusteet
  2. NestJS:n GraphQL-määritys
  3. Resolverit ja tilaukset
← Takaisin: NestJS-yritysbackendien API:t