Cara SpringBoot menggunakan GraphQL untuk membangunkan API Web
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>
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"))) } }
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()); } }
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.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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? 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 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 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

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

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

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

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
