API GraphQL dengan Spring Boot · Pelajaran

Memanfaatkan Jenis Input untuk Mutasi

Permudahkan argumen mutasi dengan mentakrifkan jenis input boleh guna semula untuk panggilan API yang lebih kemas dan tersusun.

Pelajaran 3 daripada 411 langkah

Memanfaatkan Jenis Input untuk Mutasi ialah pelajaran API GraphQL dengan Spring Boot percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran API GraphQL dengan Spring Boot, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus API GraphQL dengan Spring Boot merangkumi sejumlah 4 pelajaran.

Argumen Mutasi Terlalu Panjang?

Semasa membina mutasi GraphQL, anda sering perlu menghantar beberapa bahagian data untuk mencipta atau mengemas kini sesuatu entiti. Fikirkan tentang penciptaan pengguna baharu atau produk.

Menghantar setiap medan sebagai argumen berasingan boleh menjadikan tandatangan mutasi sangat panjang dan sukar diurus, lalu menyebabkan kod kurang mudah dibaca dan diselenggara.

Kenali Jenis Input GraphQL

Jenis input ialah jenis objek khas dalam GraphQL yang digunakan khusus sebagai argumen untuk mutasi atau kadangkala pertanyaan. Jenis ini membolehkan anda mengumpulkan medan berkaitan ke dalam satu objek berstruktur.

Hal ini menjadikan takrifan mutasi anda lebih kemas dan tersusun, serupa dengan cara DTO (Objek Pemindahan Data) berfungsi dalam API REST tradisional.

Sintaks Jenis Input (SDL)

Mentakrifkan jenis input dalam Bahasa Takrifan Skema GraphQL (SDL) adalah mudah. Anda menggunakan kata kunci input dan bukannya type.

Jenis input hanya boleh mengandungi jenis skalar, enum atau jenis input lain sebagai medannya. Jenis ini tidak boleh mengandungi jenis objek output, antara muka atau jenis kesatuan.

input CreateProductInput {
  name: String!
  description: String
  price: Float!
  category: String
}

Masalahnya: Banyak Argumen

Pertimbangkan mutasi untuk mencipta produk baharu. Tanpa jenis input, anda mungkin mentakrifkannya seperti ini:

Perhatikan bahawa senarai argumen boleh menjadi panjang dan berulang, terutamanya jika anda mempunyai banyak medan. Keadaan ini boleh menyukarkan penulisan dan pembacaan.

type Mutation {
  createProduct(
    name: String!,
    description: String,
    price: Float!,
    category: String
  ): Product
}

Penyelesaiannya: Mutasi yang Kemas

Dengan menggunakan CreateProductInput kita, tandatangan mutasi menjadi lebih kemas dan mudah dibaca. Semua medan input yang berkaitan kini dirangkumkan dalam satu argumen.

Hal ini meningkatkan kejelasan dan mengurangkan keserabutan dalam skema anda.

type Mutation {
  createProduct(input: CreateProductInput!): Product
}

input CreateProductInput {
  name: String!
  description: String
  price: Float!
  category: String
}

DTO Spring Boot untuk Input

Dalam aplikasi Spring Boot anda, jenis input GraphQL akan diwakili sebagai kelas Java ringkas. Kelas ini bertindak sebagai Objek Pemindahan Data (DTO) yang boleh dipetakan secara automatik oleh integrasi GraphQL Spring.

Pastikan nama medan dalam kelas Java anda sepadan dengan jenis input SDL supaya pemetaan berjalan lancar.

package com.coddykit.graphql;

public class CreateProductInput {
    private String name;
    private String description;
    private float price;
    private String category;

    // Getters and Setters (omitted for brevity)
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    // ... other getters/setters
}

Menggunakan Input dalam Penyelesai

Sekarang, mari lihat cara kaedah penyelesai GraphQL anda dalam Spring Boot menggunakan DTO CreateProductInput ini. Daripada menggunakan berbilang anotasi @Argument, anda hanya memerlukan satu anotasi untuk objek input anda.

Hal ini menjadikan tandatangan kaedah penyelesai lebih kemas dan mudah diurus, terutamanya apabila terdapat banyak medan input.

package com.coddykit.graphql;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.graphql.data.method.annotation.Argument;
import org.springframework.graphql.data.method.annotation.MutationMapping;
import org.springframework.stereotype.Controller;

// Dummy Product class for example return type
class Product {
    String id; String name; public Product(String id, String name) { this.id = id; this.name = name; } 
    public String getId() { return id; } public String getName() { return name; }
}

// Input DTO from previous scene
class CreateProductInput {
    private String name; private String description; private float price; private String category;
    public String getName() { return name; } public void setName(String name) { this.name = name; }
    public String getDescription() { return description; } public void setDescription(String description) { this.description = description; }
    public float getPrice() { return price; } public void setPrice(float price) { this.price = price; }
    public String getCategory() { return category; } public void setCategory(String category) { this.category = category; }
}

@SpringBootApplication
@Controller
public class Main {

    public static void main(String[] args) {
        // This would start a Spring Boot web server
        // SpringApplication.run(Main.class, args);
        System.out.println("Application context started (conceptually).");
    }

    private static long productIdCounter = 1;

    @MutationMapping
    public Product createProduct(@Argument CreateProductInput input) {
        System.out.println("Creating product: " + input.getName());
        // In a real application, you'd save this to a database
        String newId = "prod-" + productIdCounter++;
        return new Product(newId, input.getName());
    }
}

Mengapa Menggunakan Jenis Input?

Jenis input menawarkan beberapa kelebihan penting untuk reka bentuk API GraphQL anda:

  • Kebolehbacaan: Tandatangan mutasi menjadi lebih pendek dan jelas.
  • Kebolehgunaan semula: Jenis input yang sama selalunya boleh digunakan untuk mutasi penciptaan dan pengemaskinian, sekali gus mengurangkan penduaan skema.
  • Pengesahan: Logik pengesahan lebih mudah digunakan pada satu objek input yang disatukan.
  • Kebolehkembangan: Penambahan medan pilihan baharu pada jenis input tidak memecahkan pelanggan sedia ada kerana pelanggan boleh mengabaikan medan baharu itu.

Data Kompleks dengan Input Bersarang

Jenis input juga boleh mengandungi jenis input lain, yang membolehkan anda memodelkan data kompleks dan berhierarki untuk mutasi. Hal ini sangat berkuasa bagi penghantaran data berstruktur.

Sebagai contoh, semasa mencipta pesanan, anda mungkin perlu menyertakan butiran pelanggan dan senarai item, setiap satunya dengan sifat tersendiri, semuanya dalam satu objek input.

input AddressInput {
  street: String!
  city: String!
  zipCode: String
}

input CustomerInput {
  name: String!
  email: String!
  shippingAddress: AddressInput
}

input CreateOrderInput {
  customer: CustomerInput!
  items: [OrderItemInput!]!
}

input OrderItemInput {
  productId: ID!
  quantity: Int!
}

Semakan Jenis Input

Anda telah mempelajari tentang Jenis Input GraphQL dan manfaatnya. Mari uji pemahaman anda!

Ulang Kaji: Jenis Input Dikuasai!

Syabas! Dalam pelajaran ini, anda telah menguasai Jenis Input GraphQL. Anda telah mempelajari cara jenis ini memudahkan argumen mutasi, sekali gus menjadikan API anda lebih kemas dan mudah diselenggara.

  • Kita telah melihat cara mentakrifkan jenis input dalam SDL menggunakan kata kunci input.
  • Melaksanakannya dalam penyelesai Spring Boot menggunakan DTO.
  • Serta meneroka manfaat utamanya seperti kebolehbacaan yang lebih baik, kebolehgunaan semula dan pengesahan yang lebih mudah.

Jenis ini penting untuk membina API GraphQL yang kukuh dan mesra pengguna! Teruskan berlatih!

Percuma untuk bermula

Pelajari API GraphQL dengan Spring Boot dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Memanfaatkan Jenis Input untuk Mutasi” percuma?

Ya — teks penuh “Memanfaatkan Jenis Input untuk Mutasi” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus API GraphQL dengan Spring Boot, tingkat taraf kepada CoddyKit PRO. Kursus API GraphQL dengan Spring Boot merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Memanfaatkan Jenis Input untuk Mutasi”?

Permudahkan argumen mutasi dengan mentakrifkan jenis input boleh guna semula untuk panggilan API yang lebih kemas dan tersusun. Anda berlatih API GraphQL dengan Spring Boot menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan API GraphQL dengan Spring Boot?

Tiada pengalaman terdahulu diperlukan. Pembelajaran API GraphQL dengan Spring Boot di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Memanfaatkan Jenis Input untuk Mutasi” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran API GraphQL dengan Spring Boot ini?

Ya. Setiap pelajaran API GraphQL dengan Spring Boot menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Memodelkan Objek dan Hubungan Bersarang
  2. Melaksanakan Antara Muka dan Jenis Kesatuan
  3. Memanfaatkan Jenis Input untuk Mutasi
  4. Enum dan Jenis Skalar Tersuai
← Kembali ke API GraphQL dengan Spring Boot