TL;DR

Rust で GraphQL サーバを作るためのライブラリ。スキーマをスキーマファイルではなく Rust のコードで定義する、コードファーストの方式を採る。

仕組み

Juniper は GraphQL の仕様(October 2021)のクエリ言語をすべてサポートしており、インタフェース、ユニオン、イントロスペクション、バリデーションも扱える。定義したスキーマを GraphQL Schema Language として出力することもできる。

Juniper 自体は Web サーバを含まないので、既存のサーバに組み込んで使う。Actix、Hyper、Rocket、Warp、axum との統合が用意されている。シリアライズ形式や通信手段にも依存しない。

型はデフォルトで non-null になる。たとえば Vec<Episode> は [Episode!]! になる。

注意点

コードファーストなので、Schema first で開発したい場合は、別プロジェクトの juniper-from-schema を使う。また、まだ 1.0 に達しておらず、API が変わる可能性がある。

関連

  • gqlgen: Go の GraphQL サーバライブラリ。こちらは Schema first

出典