Jadual Kandungan
Kata Pengantar
Pelan pelaksanaan GraphQL dalam Spring Boot
Rumah Java javaTutorial Cara SpringBoot menggunakan GraphQL untuk membangunkan API Web

Cara SpringBoot menggunakan GraphQL untuk membangunkan API Web

May 13, 2023 am 10:52 AM
api graphql springboot

Kata Pengantar

API Restful tradisional mempunyai banyak masalah Pertama sekali, ia tidak dapat mengawal medan yang dikembalikan, dan bahagian hadapan tidak boleh meramalkan hasil pengembalian bahagian belakang ke alamat permintaan yang berbeza. Ini mengakibatkan berbilang permintaan. GraphQL ialah bahasa pertanyaan API yang dibina berdasarkan latar belakang ini Berbanding dengan API Restful tradisional, ia mempunyai kelebihan berikut:

  • Fleksibiliti: GraphQL boleh fleksibel mengikut keperluan pelanggan. Tanya data dengan cekap dan bukannya mengembalikan data berstruktur tetap seperti RESTful API.

  • Kurangkan permintaan rangkaian: GraphQL membenarkan pelanggan mengambil berbilang sumber dalam satu permintaan, yang membantu mengurangkan bilangan permintaan rangkaian dan meningkatkan prestasi.

  • Penaipan yang kuat: GraphQL mempunyai sistem taip kuat yang membolehkan pelanggan mengesan ralat dalam pertanyaan pada masa penyusunan, yang membantu mengurangkan ralat masa jalan.

  • Boleh Dicache: GraphQL boleh dicache, yang bermaksud pelayan boleh menyimpan hasil pertanyaan, meningkatkan prestasi dan kebolehskalaan.

  • Dokumentasi: GraphQL mempunyai keupayaan untuk mendokumentasikan diri, membolehkan pembangun memahami dengan cepat struktur dan fungsi API.

Pelan pelaksanaan GraphQL dalam Spring Boot

Jika bahasa back-end ialah Java, maka GraphQL Java ialah perpustakaan asas untuk melaksanakan GraphQL. Selain itu, Spring telah menyepadukan GraphQL Jika Spring digunakan dalam projek, Spring GraphQL lebih disyorkan.

Pembangunan Spring GraphQL secara amnya dibahagikan kepada langkah berikut

Tambah kebergantungan Spring GraphQL

Tambah kebergantungan Spring GraphQL dalam projek anda. Anda boleh menambah kebergantungan melalui alat binaan seperti Maven atau Gradle. Sebagai contoh, jika anda menggunakan Maven, anda boleh menambah kebergantungan berikut

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-graphql</artifactId>
        </dependency>
Salin selepas log masuk

Define GraphQL Schema

Define GraphQL Schema dalam aplikasi anda. Skema mentakrifkan jenis dan medan yang boleh ditanya. Anda boleh mentakrifkan skema menggunakan SDL (Schema Definition Language) atau secara pengaturcaraan.

Untuk projek Spring Boot, fail skema diletakkan dalam direktori resources/graphql/ dan nama fail diakhiri dengan graphqls Berikut ialah schema.graphqls ringkas yang saya takrifkan.

Ia menentukan dua pelaksanaan pertanyaan author(id:Int) bermaksud menanyakan Pengarang dengan id, dan allAuthors bermaksud menanyakan tatasusunan Pengarang.

skema {
pertanyaan: Pertanyaan
}

taip Pertanyaan {
pengarang(id:Int): Pengarang
semuaPengarang: [Pengarang]
}

taip Pengarang {
id:Int
firstName:String
lastName:String
e-mel:String
tarikh lahir:String
}

Melaksanakan RuntimeWiringConfigurer

RuntimeWiringConfigurer ialah teras pelaksanaan GraphQL untuk mendapatkan data Menggunakan GraphQL tidak boleh langsung mengalih keluar rangka kerja lapisan kegigihan seperti Mybatis/Jpa .

RuntimeWiringConfigurer adalah serupa dengan lapisan perkhidmatan dalam Spring, yang merupakan teras pelaksanaan data asas.

Berikut ialah contoh mudah:

@Component
public class AuthorWiring implements RuntimeWiringConfigurer {
    private final AuthorRepository authorRepository;
    public AuthorWiring(AuthorRepository authorRepository) {
        this.authorRepository = authorRepository;
    }
    @Override
    public void configure(RuntimeWiring.Builder builder) {
        builder.type("Query", typeWiring -> typeWiring
                        .dataFetcher("allAuthors", environment -> authorRepository.findAll())
                        .dataFetcher("author", environment -> authorRepository.getReferenceById(environment.getArgument("id")))
    }
}
Salin selepas log masuk

Di sini, dua objek DataFetcher ditakrifkan di dalam kaedah konfigurasi untuk menentukan cara pengarang dan semua Pengarang bertanyakan data ia masih melalui JPA Data pertanyaan.

Define GraphQL Controller

Kami mentakrifkan GraphQLController untuk menerima parameter input permintaan web Contohnya adalah seperti berikut:

@RestController
@RequestMapping("graphql")
public class GraphQLController {
    private final GraphQL graphQL;
    @Autowired
    public GraphQLController(GraphQlSource graphQlSource) {
        graphQL = graphQlSource.graphQl();
    }
    @PostMapping("query")
    public ResponseEntity<Object> query(@RequestBody String query) {
        ExecutionResult result = graphQL.execute(query);
        return ResponseEntity.ok(result.getData());
    }
}
Salin selepas log masuk

Objek GraphQL dalam kod adalah pintu masuk ke. laksanakan pertanyaan, tetapi GraphQL Terdapat hanya satu pembina peribadi, jadi ia tidak boleh disuntik secara langsung Anda mesti mendapatkan objek GraphQL dengan menyuntik GraphQlSource.

Perhatikan bahawa dalam GraphQL kita hanya boleh menggunakan String untuk menerima parameter dan tidak boleh menggunakan objek model Ini kerana parameter permintaan Graf bukan struktur json.

Permintaan Graf Uji

Kami mencipta fail graphql.http untuk melaksanakan permintaan http dalam idea

### Hantar permintaan POST dengan badan json
POST http://localhost:8080/graphql/query
Content-Type: application/json

{
author(id: 1) {
id
firstName
lastName
tarikh lahir
}
}

### Hantar permintaan POST dengan badan json
POST http://localhost:8080/graphql/query
Kandungan -Jenis: aplikasi /json

{
allAuthors {
id
firstName
lastName
tarikh lahir
}
}

Jalankan pertanyaan untuk pengarang(id: 1) dan anda boleh melihat bahawa keputusan dikembalikan seperti biasa. Jika kita hanya memerlukan medan FirstName dan LastName, kemudian alih keluar id dan tarikh lahir daripada parameter input permintaan tanpa mengubah sebarang kod back-end.

Cara SpringBoot menggunakan GraphQL untuk membangunkan API Web

Cara SpringBoot menggunakan GraphQL untuk membangunkan API Web

Atas ialah kandungan terperinci Cara SpringBoot menggunakan GraphQL untuk membangunkan API Web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

Bagaimana untuk merangkak dan memproses data dengan memanggil antara muka API dalam projek PHP? Bagaimana untuk merangkak dan memproses data dengan memanggil antara muka API dalam projek PHP? Sep 05, 2023 am 08:41 AM

Bagaimana untuk merangkak dan memproses data dengan memanggil antara muka API dalam projek PHP? 1. Pengenalan Dalam projek PHP, kita selalunya perlu merangkak data dari tapak web lain dan memproses data ini. Banyak tapak web menyediakan antara muka API, dan kami boleh mendapatkan data dengan memanggil antara muka ini. Artikel ini akan memperkenalkan cara menggunakan PHP untuk memanggil antara muka API untuk merangkak dan memproses data. 2. Dapatkan URL dan parameter antara muka API Sebelum memulakan, kita perlu mendapatkan URL antara muka API sasaran dan parameter yang diperlukan.

Panduan Panggilan API React: Cara berinteraksi dan memindahkan data dengan API bahagian belakang Panduan Panggilan API React: Cara berinteraksi dan memindahkan data dengan API bahagian belakang Sep 26, 2023 am 10:19 AM

Panduan Panggilan ReactAPI: Cara berinteraksi dan memindahkan data ke API bahagian belakang Gambaran Keseluruhan: Dalam pembangunan web moden, berinteraksi dengan dan memindahkan data ke API bahagian belakang adalah keperluan biasa. React, sebagai rangka kerja bahagian hadapan yang popular, menyediakan beberapa alat dan ciri yang berkuasa untuk memudahkan proses ini. Artikel ini akan memperkenalkan cara menggunakan React untuk memanggil API bahagian belakang, termasuk permintaan GET dan POST asas serta memberikan contoh kod khusus. Pasang kebergantungan yang diperlukan: Pertama, pastikan Axi dipasang dalam projek

Analisis strategi integrasi API Oracle: mencapai komunikasi lancar antara sistem Analisis strategi integrasi API Oracle: mencapai komunikasi lancar antara sistem Mar 07, 2024 pm 10:09 PM

Analisis strategi penyepaduan API Oracle: Untuk mencapai komunikasi yang lancar antara sistem, contoh kod khusus diperlukan Dalam era digital hari ini, sistem perusahaan dalaman perlu berkomunikasi antara satu sama lain dan berkongsi data, dan Oracle API ialah salah satu alat penting untuk membantu mencapai kelancaran. komunikasi antara sistem. Artikel ini akan bermula dengan konsep dan prinsip asas OracleAPI, meneroka strategi penyepaduan API, dan akhirnya memberikan contoh kod khusus untuk membantu pembaca memahami dan menggunakan OracleAPI dengan lebih baik. 1. API Oracle Asas

Simpan data API ke format CSV menggunakan Python Simpan data API ke format CSV menggunakan Python Aug 31, 2023 pm 09:09 PM

Dalam dunia aplikasi dan analitik dipacu data, API (Antara Muka Pengaturcaraan Aplikasi) memainkan peranan penting dalam mendapatkan semula data daripada pelbagai sumber. Apabila bekerja dengan data API, anda selalunya perlu menyimpan data dalam format yang mudah diakses dan dimanipulasi. Satu format sedemikian ialah CSV (Nilai Dipisahkan Koma), yang membolehkan data jadual disusun dan disimpan dengan cekap. Artikel ini akan meneroka proses menyimpan data API ke format CSV menggunakan bahasa pengaturcaraan yang berkuasa Python. Dengan mengikut langkah-langkah yang digariskan dalam panduan ini, kami akan mempelajari cara mendapatkan semula data daripada API, mengekstrak maklumat yang berkaitan dan menyimpannya dalam fail CSV untuk analisis dan pemprosesan selanjutnya. Mari selami dunia pemprosesan data API dengan Python dan buka kunci potensi format CSV

Panduan Penggunaan API Oracle: Meneroka Teknologi Antaramuka Data Panduan Penggunaan API Oracle: Meneroka Teknologi Antaramuka Data Mar 07, 2024 am 11:12 AM

Oracle ialah penyedia sistem pengurusan pangkalan data yang terkenal di dunia, dan APInya (Antara Muka Pengaturcaraan Aplikasi) ialah alat berkuasa yang membantu pembangun berinteraksi dan menyepadukan dengan mudah dengan pangkalan data Oracle. Dalam artikel ini, kami akan menyelidiki panduan penggunaan API Oracle, menunjukkan kepada pembaca cara menggunakan teknologi antara muka data semasa proses pembangunan dan menyediakan contoh kod khusus. 1. Oracle

Bagaimana untuk menangani masalah ralat API Laravel Bagaimana untuk menangani masalah ralat API Laravel Mar 06, 2024 pm 05:18 PM

Tajuk: Cara menangani pelaporan ralat API Laravel, contoh kod khusus diperlukan Semasa membangunkan Laravel, ralat API sering ditemui. Ralat ini mungkin datang daripada pelbagai sebab seperti ralat logik kod program, masalah pertanyaan pangkalan data atau kegagalan permintaan API luaran. Cara mengendalikan laporan ralat ini ialah isu utama Artikel ini akan menggunakan contoh kod khusus untuk menunjukkan cara mengendalikan laporan ralat API Laravel dengan berkesan. 1. Ralat pengendalian dalam Laravel

Bagaimana untuk membangunkan API CRUD mudah menggunakan MongoDB Bagaimana untuk membangunkan API CRUD mudah menggunakan MongoDB Sep 19, 2023 pm 12:32 PM

Cara menggunakan MongoDB untuk membangunkan CRUDAPI ringkas Dalam pembangunan aplikasi web moden, operasi CRUD (tambah, padam, ubah suai, pertanyaan) adalah salah satu fungsi yang paling biasa dan penting. Dalam artikel ini, kami akan memperkenalkan cara membangunkan API CRUD mudah menggunakan pangkalan data MongoDB dan menyediakan contoh kod khusus. MongoDB ialah pangkalan data NoSQL sumber terbuka yang menyimpan data dalam bentuk dokumen. Tidak seperti pangkalan data hubungan tradisional, MongoDB tidak mempunyai skema yang telah ditetapkan

See all articles