API GraphQL dengan Spring Boot · Pelajaran

Membina Arahan Tersuai

Cipta arahan skema anda sendiri untuk menambah logik, pengesahan atau transformasi tersuai pada medan GraphQL.

Pelajaran 1 daripada 411 langkah

Membina Arahan Tersuai ialah pelajaran API GraphQL dengan Spring Boot percuma di CoddyKit. Ini ialah pelajaran 1 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.

Arahan: Memperluas GraphQL

Arahan GraphQL ialah alat berkuasa yang membolehkan anda menambahkan tingkah laku tersuai atau metadata pada skema anda. Anda mungkin sudah mengetahui arahan terbina dalam seperti @deprecated atau @skip.

Arahan tersuai membolehkan anda mentakrifkan arahan sendiri dan memperluas keupayaan GraphQL agar sesuai dengan keperluan unik aplikasi anda.

Kuasa Arahan Tersuai

Arahan tersuai menawarkan beberapa faedah:

  • Boleh digunakan semula: Gunakan logik yang sama merentas berbilang medan atau jenis tanpa mengulangi kod.
  • Pemisahan Tanggungjawab: Pastikan logik perniagaan berasingan daripada takrifan skema.
  • Keprihatinan Merentas Komponen: Tambahkan ciri seperti pengelogan, kebenaran atau pengesahan dengan mudah pada banyak bahagian API anda.

Mengisytiharkan Arahan Anda

Anda mentakrifkan arahan tersuai menggunakan kata kunci directive dalam Bahasa Takrifan Skema (SDL).

Ia menyatakan nama arahan, argumen, jika ada, dan lokasi yang boleh digunakan untuk arahan tersebut.

directive @log(message: String = "Access") on FIELD_DEFINITION | FIELD

Memahami Lokasi Arahan

Kata kunci on menentukan tempat arahan anda boleh digunakan. Lokasi lazim termasuk:

  • FIELD_DEFINITION: Pada medan dalam sesuatu jenis, contohnya User.name.
  • FIELD: Pada medan dalam dokumen pertanyaan, iaitu di sisi klien.
  • ARGUMENT_DEFINITION: Pada argumen sesuatu medan atau medan input.
  • OBJECT: Pada jenis objek.

Melaksanakan Logik Arahan

Untuk membolehkan arahan tersuai anda melakukan sesuatu, anda perlu "menyambungkannya" kepada aplikasi Spring Boot anda. Ini melibatkan pemberitahuan kepada graphql-java tentang cara mengendalikan arahan tersebut apabila menemuinya dalam skema.

Kami akan menggunakan SchemaDirectiveWiring untuk memintas dan mengubah suai resolusi medan.

Contoh: Arahan @log

Mari kita cipta arahan @log yang mencetak mesej setiap kali medan yang dikenakan arahan tersebut diselesaikan. Ini ialah cara yang baik untuk melihat arahan berfungsi.

Mula-mula, definisi skema kita:

type Query {
  hello: String @log(message: "Hello field accessed")
  goodbye: String
}

directive @log(message: String = "Default Log") on FIELD_DEFINITION

Menyambungkan Arahan @log (Bahagian 1)

Dalam Spring Boot, anda melaksanakan SchemaDirectiveWiring dan mendaftarkannya. Kelas ini akan mengandungi logik yang dilaksanakan apabila arahan tersebut ditemui.

Kami akan menumpukan pada onField untuk memintas resolusi medan.

package com.coddykit.directives;

import graphql.schema.DataFetcher;
import graphql.schema.DataFetcherFactories;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.idl.SchemaDirectiveWiring;
import graphql.schema.idl.SchemaDirectiveWiringEnvironment;
import org.springframework.stereotype.Component;

@Component
public class LogDirective implements SchemaDirectiveWiring {

    @Override
    public GraphQLFieldDefinition onField(
            SchemaDirectiveWiringEnvironment<GraphQLFieldDefinition> environment) {

        GraphQLFieldDefinition field = environment.getElement();
        String message = (String) environment.getDirective()
                                             .getArgument("message")
                                             .getValue();

        DataFetcher originalDataFetcher = environment.getFieldDataFetcher();
        DataFetcher newDataFetcher = DataFetcherFactories
            .wrapDataFetcher(originalDataFetcher, (dataFetchingEnvironment, value) -> {
                System.out.println("LOG: " + message + " for field '" + field.getName() + "'");
                return value;
            });

        environment.getFieldAndContainer().setDataFetcher(newDataFetcher);
        return field;
    }
}

Menyambungkan Arahan @log (Bahagian 2)

Untuk memastikan LogDirective kita digunakan, kita memerlukan aplikasi utama dan penyelesai. Beginilah keseluruhan prosesnya, termasuk pengambil data ringkas untuk medan hello kita.

Perhatikan bahawa RuntimeWiringConfigurer digunakan untuk mendaftarkan penyambungan arahan.

package com.coddykit;

import com.coddykit.directives.LogDirective;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.graphql.execution.RuntimeWiringConfigurer;
import org.springframework.stereotype.Controller;
import org.springframework.graphql.data.method.annotation.QueryMapping;

@SpringBootApplication
@Controller
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

    @QueryMapping
    public String hello() {
        return "Hello from CoddyKit!";
    }

    // This bean registers our custom directive wiring
    @Bean
    public RuntimeWiringConfigurer runtimeWiringConfigurer(LogDirective logDirective) {
        return builder -> builder.directive("log", logDirective);
    }
}
// For this application to run, the LogDirective class (from Scene 7)
// must be present in 'com.coddykit.directives' package.

Menguji Arahan

Dengan aplikasi sedang berjalan, hantar pertanyaan GraphQL seperti ini:

Apabila anda membuat pertanyaan untuk medan hello, anda akan melihat "LOG: Hello field accessed for field 'hello'" dicetak pada konsol pelayan anda, yang menunjukkan arahan tersuai kita sedang berfungsi!

query {
  hello
}

Semakan Pantas: Kuasa Arahan

Anda telah melihat cara arahan tersuai menambahkan logik pada skema GraphQL anda. Antara berikut, yang manakah paling tepat menerangkan manfaat utama menggunakan arahan tersuai?

Imbas Kembali: Membina Arahan

Dalam pelajaran ini, anda telah mempelajari cara mentakrifkan dan melaksanakan arahan GraphQL tersuai dalam aplikasi Spring Boot. Kita telah membincangkan:

  • Mengisytiharkan arahan dalam SDL dengan on LOCATION.
  • Melaksanakan logik arahan menggunakan SchemaDirectiveWiring.
  • Mengenakan arahan untuk mengubah suai tingkah laku medan, seperti dalam contoh @log kita.

Arahan tersuai berkuasa untuk menambahkan kebimbangan merentas aspek yang boleh digunakan semula pada API anda.

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 “Membina Arahan Tersuai” percuma?

Ya — teks penuh “Membina Arahan Tersuai” 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 “Membina Arahan Tersuai”?

Cipta arahan skema anda sendiri untuk menambah logik, pengesahan atau transformasi tersuai pada medan GraphQL. 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 1 daripada 4.

Berapa lamakah pelajaran “Membina Arahan Tersuai” 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. Membina Arahan Tersuai
  2. Asas Penyambungan Skema
  3. Menggabungkan Berbilang Skema GraphQL
  4. Pemodulan Skema dengan Peluasan Jenis
← Kembali ke API GraphQL dengan Spring Boot