このツールの動作
JSON の標本が GraphQL の SDL 型になります。オブジェクト一つにつき一つです。
{ "id": 1, "name": "Ada", "tags": ["admin"], "address": { "city": "Paris" } }
type Root {
id: Int!
name: String!
tags: [String!]!
address: Address!
}
type Address {
city: String!
}
[String!]! は外から内へ読みます。並び自体が null にならず、要素も null になりません。どちらも標本から来ています。並びがあり、その中に文字列がありました。
型だけ——これはまだ図式ではない
Query も Mutation も指令もありません。JSON の荷が語るのはデータの姿であって、サーバがどの項目を、どんな名前で公開するかではありません。入り口はご自分で足してください。
type Query {
root: Root!
}
それが無ければ、この文書は誰にも尋ねられない型を述べているだけです。
SDL が言えないことは、名指しする。偽らない
nullと型の分からない値は独自スカラーJSONになります。先頭で宣言し、実装はあなたに委ねます。SDL に「何でも」の型はありません。- 型の混ざった配列は同じ理由で
[JSON]!になります。形の混ざった並びは GraphQL の並び型ではありません。 - 32 ビットに収まらない整数は、もう一つの独自スカラー
BigIntになります。GraphQL のIntは符号付き 32 ビットなので、十一桁の識別子は表せず、それを返すサーバは直列化で例外を投げます。以前はそれでもInt!でした。本物の欠陥で、この文章を書く過程で見つけ、直しました。 - 空のオブジェクトは拒みます。
type A {}は妥当な SDL ではありません。型は少なくとも一つの項目を定義しなければならないからです。どのサーバも解析しない図式を渡すかわりに、変換は止まり、その型を名指しします。これもここで見つけ、直しました。
名前は繕い、衝突は分ける
GraphQL の名前に使えるのは英字、数字、_ だけで、数字では始まりません。content-type は content_type に、2fa は _2fa になります。繕った名前が同じ型の中でぶつかったら、二つ目に番号を付けます。黙って混ぜることはしません。
根が数値や文字列——42、"テキスト"——のときは拒みます。SDL が述べるのはオブジェクトの型であり、そこには述べるものがありません。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。