Pustaka server GraphQL untuk Rust
GraphQL adalah bahasa kueri data yang dikembangkan oleh Facebook yang dimaksudkan untuk melayani antarmuka aplikasi seluler dan web.
Juniper memungkinkan untuk menulis server GraphQL di Rust yang aman untuk mengetik dan sangat cepat. Kami juga mencoba mendeklarasikan dan menyelesaikan skema GraphQL senyaman yang dimungkinkan oleh Rust.
Juniper tidak menyertakan server web - melainkan menyediakan elemen penyusun untuk memudahkan integrasi dengan server yang ada. Secara opsional, ini menyediakan integrasi bawaan untuk kerangka kerja Actix, Hyper, Rocket, dan Warp, termasuk Graphiql dan GraphQL Playground yang tertanam untuk memudahkan proses debug.
Buku ini juga tersedia untuk cabang master dan versi lama yang diterbitkan setelah 0.11.1. Lihat indeks buku.
Tempat terbaik untuk memulai adalah Juniper Book, yang berisi panduan dengan banyak contoh, mencakup semua fitur Juniper. (WIP sangat banyak)
Untuk memulai dengan cepat dan merasakan Juniper, lihat bagian Mulai Cepat.
Untuk informasi spesifik tentang makro, tipe, dan api Juniper, Referensi API adalah tempat terbaik untuk mencarinya.
Anda juga dapat melihat skema Star Wars untuk melihat contoh kompleks termasuk polimorfisme dengan sifat dan antarmuka. Untuk contoh integrasi kerangka web, lihat folder contoh actix, axum, hyper, rocket, dan warp.
Juniper mendukung bahasa kueri GraphQL lengkap sesuai spesifikasi (Oktober 2021), termasuk antarmuka, gabungan, introspeksi skema, dan validasi. Itu juga dapat menampilkan skema dalam Bahasa Skema GraphQL.
Sebagai pengecualian terhadap pustaka GraphQL lainnya untuk bahasa lain, Juniper membuat tipe non-null secara default. Bidang bertipe Vec<Episode>
akan diubah menjadi [Episode!]!
. Jenis Rust yang sesuai misalnya [Episode]
adalah Option<Vec<Option<Episode>>>
.
Juniper tidak peduli dengan format serialisasi dan transportasi jaringan.
Juniper mendukung eksekusi asinkron dan sinkron menggunakan masing-masing execute()
dan execute_sync()
. Eksekusi asinkron bersifat agnostik waktu proses.
Juniper mengikuti pendekatan yang mengutamakan kode untuk mendefinisikan skema GraphQL. Jika Anda ingin menggunakan pendekatan skema pertama, pertimbangkan juniper-from-schema untuk menghasilkan kode dari file skema.
Juniper memiliki integrasi otomatis dengan beberapa peti Rust yang sangat umum untuk membuat skema pembangunan menjadi mudah. Tipe dari peti ini akan dapat digunakan dalam Skema Anda secara otomatis.
Juniper belum mencapai versi 1.0, sehingga mungkin terjadi ketidakstabilan API.