Oppretting av data med mutasjoner
Implementer mutasjoner i Spring Boot for å legge til nye poster i datalageret på serversiden.
Oppretting av data med mutasjoner er en gratis leksjon i GraphQL-API-er med Spring Boot på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i GraphQL-API-er med Spring Boot, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i GraphQL-API-er med Spring Boot inneholder totalt 4 leksjoner.
Introduksjon: Legge til nye data
GraphQL brukes ikke bare til å hente data. Det lar oss også endre data! I dag skal vi lære hvordan vi legger til helt nye poster i systemet vårt ved hjelp av mutasjoner.
Dette er en grunnleggende ferdighet når man bygger interaktive applikasjoner.
Mutasjonens rolle ved oppretting
I GraphQL kalles enhver operasjon som endrer data på serveren, en mutasjon. Dette omfatter:
- Opprette nye elementer (dagens fokus!)
- Oppdatere eksisterende elementer
- Slette elementer
Tenk på spørringer som noe vi bruker til å lese data, og mutasjoner som noe vi bruker til å skrive eller endre data.
Utforming av inputtyper
Når du oppretter data, trenger du ofte å oppgi flere felt (for eksempel en boks tittel, forfatter og utgivelsesår). I stedet for å føre opp hvert felt som et separat argument for mutasjonen, bruker vi inputtyper.
Inputtyper er spesielle objekttyper som brukes som argumenter. De gjør skjemaet ryddigere og argumentene enklere å håndtere, særlig for komplekse objekter.
Skjema: createBook-muteringen
Først definerer vi BookInput og createBook-mutasjonen i GraphQL Schema Definition Language (SDL).
Dette forteller klientene nøyaktig hvilke data som trengs for å opprette en bok, og hva mutasjonen returnerer.
input BookInput {
title: String!
author: String!
publicationYear: Int
}
type Mutation {
createBook(book: BookInput!): Book!
}
type Book {
id: ID!
title: String!
author: String!
publicationYear: Int
}Bokens datamodell
I Spring Boot-applikasjonen vår representerer vi en bok ved hjelp av en enkel Java-klasse (et Plain Old Java Object, eller POJO). Denne klassen inneholder dataene for hver bok vi oppretter.
class Book {
String id;
String title;
String author;
Integer publicationYear;
public Book(String id, String title, String author, Integer year) {
this.id = id;
this.title = title;
this.author = author;
this.publicationYear = year;
}
// Getters for all fields (omitted for brevity in snippets)
public String getId() { return id; }
public String getTitle() { return title; }
public String getAuthor() { return author; }
public Integer getPublicationYear() { return publicationYear; }
}Simulering av datalagring
I denne leksjonen holder vi det enkelt og lagrer bøkene våre i en liste i minnet. I en virkelig Spring Boot-applikasjon ville dette vanligvis innebære en database (for eksempel H2 eller PostgreSQL) og et Spring Data JPA-repositorium.
Foreløpig bruker vi en statisk List til å simulere datalageret vårt.
import java.util.ArrayList;
import java.util.List;
public class BookDataStore {
private static final List<Book> books = new ArrayList<>();
public static void addBook(Book book) {
books.add(book);
}
public static List<Book> getAllBooks() {
return new ArrayList<>(books); // Return a copy
}
}Implementering av resolvermetoden
Nå skal vi skrive Java-metoden som fungerer som resolver for createBook-mutasjonen.
Denne metoden mottar BookInput og utfører logikken for å opprette et nytt Book-objekt.
import java.util.UUID; // For generating unique IDs
// Simplified BookInput class for demonstration
class BookInput {
String title;
String author;
Integer publicationYear;
// Getters (omitted for brevity)
public String getTitle() { return title; }
public String getAuthor() { return author; }
public Integer getPublicationYear() { return publicationYear; }
}
public class BookService {
public Book createBook(BookInput bookInput) {
// ... logic to create and save book ...
return null; // Placeholder
}
}Resolverlogikk: Legge til data
Her er den detaljerte logikken i createBook-resolvermetoden. Den håndterer generering av en ID, oppretting av objektet og lagring av det.
import java.util.UUID;
// (Book, BookInput, BookDataStore classes would be available)
public class BookService {
public Book createBook(BookInput bookInput) {
// 1. Generate a unique ID for the new book
String newId = UUID.randomUUID().toString();
// 2. Create a new Book instance from the input
Book newBook = new Book(
newId,
bookInput.getTitle(),
bookInput.getAuthor(),
bookInput.getPublicationYear()
);
// 3. Add the new Book to our data store
BookDataStore.addBook(newBook);
// 4. Return the newly created Book
return newBook;
}
}Kjørbart eksempel: createBook
Her er et forenklet, kjørbart eksempel som viser hvordan createBook-logikken fungerer i en main-metode. Kjør det og se på resultatet!
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
// Simplified Book class for runnable snippet
class Book {
String id;
String title;
String author;
Integer publicationYear;
public Book(String id, String title, String author, Integer year) {
this.id = id;
this.title = title;
this.author = author;
this.publicationYear = year;
}
public String toString() {
return "Book{id='" + id.substring(0,4) + "...', title='" + title + "'}";
}
}
// Simplified BookInput class
class BookInput {
String title;
String author;
Integer publicationYear;
public BookInput(String title, String author, Integer year) {
this.title = title;
this.author = author;
this.publicationYear = year;
}
public String getTitle() { return title; }
public String getAuthor() { return author; }
public Integer getPublicationYear() { return publicationYear; }
}
// Simplified DataStore
class SimpleBookDataStore {
private static final List<Book> books = new ArrayList<>();
public static void addBook(Book book) { books.add(book); }
public static List<Book> getAllBooks() { return new ArrayList<>(books); }
}
public class Main {
public Book createBook(BookInput bookInput) {
String newId = UUID.randomUUID().toString();
Book newBook = new Book(
newId,
bookInput.getTitle(),
bookInput.getAuthor(),
bookInput.getPublicationYear()
);
SimpleBookDataStore.addBook(newBook);
return newBook;
}
public static void main(String[] args) {
Main app = new Main();
BookInput input1 = new BookInput(
"The Great Journey", "A. Traveler", 2023
);
Book createdBook1 = app.createBook(input1);
System.out.println("Created: " + createdBook1);
BookInput input2 = new BookInput(
"Coding Adventures", "B. Coder", 2024
);
Book createdBook2 = app.createBook(input2);
System.out.println("Created: " + createdBook2);
System.out.println("\nAll books in store:");
for (Book b : SimpleBookDataStore.getAllBooks()) {
System.out.println("- " + b);
}
}
}Rask sjekk: Mutasjonsinput
Hvorfor foretrekkes vanligvis en Input Type for mutasjonsargumenter fremfor individuelle skalarargumenter?
Oppsummering: Opprette data
Godt jobbet! Du har lært hvordan du implementerer en GraphQL-mutasjon for å opprette nye dataposter i en Spring Boot-kontekst.
- Vi definerte en inputtype i skjemaet for å få ryddigere argumenter.
- Vi opprettet et mutasjonsfelt (
createBook) som bruker denne inputtypen. - Vi implementerte en Java-resolvermetode som håndterer opprettingslogikken.
- Vi så hvordan vi kan legge til nye data i et simulert datalager og returnere det nye elementet.
Deretter skal vi se på hvordan vi oppdaterer og sletter eksisterende data ved hjelp av mutasjoner!
Lær deg GraphQL-API-er med Spring Boot med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Oppretting av data med mutasjoner» gratis?
Ja – hele teksten i «Oppretting av data med mutasjoner» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av GraphQL-API-er med Spring Boot-kurset, kan du oppgradere til CoddyKit PRO. Kurset i GraphQL-API-er med Spring Boot inneholder totalt 4 leksjoner.
Hva lærer jeg i «Oppretting av data med mutasjoner»?
Implementer mutasjoner i Spring Boot for å legge til nye poster i datalageret på serversiden. Du øver på GraphQL-API-er med Spring Boot med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med GraphQL-API-er med Spring Boot?
Ingen tidligere erfaring er nødvendig. GraphQL-API-er med Spring Boot på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Oppretting av data med mutasjoner»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne GraphQL-API-er med Spring Boot-leksjonen?
Ja. Alle GraphQL-API-er med Spring Boot-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Forstå GraphQL-mutasjoner
- Oppretting av data med mutasjoner
- Oppdatering og sletting av data
- Validering av input-argumenter i mutasjoner