フラグメントを使用して、GraphSQLスキーマをクリーンアップする方法
16905 ワード
もともと投稿StepZen
あなたが以前に複数のGraphSQL質問を書いたならば、あなたは、複製されたコードが速く構築するのを知っています.幸いにも、Graphicsのスペックは、あなたのコードをトリムするためにフラグメントを定義しており、Stezenはあなたが速度でそれを助けるためのツールを持っています!
あなたが尋ねたうれしい!基本的に、GraphSQLフラグメントは開発者がDon't Repeat Yourself 原理.
によるとthe official spec , グラフの断片は
つまり、それらが元素である、原子であることを意味します.コードをさらに減らすことはできません.このため、重複するコードを削除することを意味します.
しかし、断片が理論にどんなものであるかを知っていること、そして実際にそれらを使用するもう一つのことです.割れましょう!
あなたが私と一緒にしたがっているならば、あなたは2、3のものを必要とします. エーStepZen account 管理者とAPIキーにアクセスする. との親近感The Cat API (キーにアクセスするには、フリーアカウントが必要です).
この例のスキーマは、1つのフォルダの下にある3つのファイルです.
Aに気づくでしょう
これは次のファイルで定義されている設定を参照します.
最後に、
Stezenには、Graphqlのクエリーエクスプローラがあります.Stezzenスキーマエクスプローラーではすべての種類のおいしい機能がありますが、今日、我々はフラグメントボタンに集中するつもりです.
エクスプローラを開くには
ステップZenエクスプローラエクスプローラをブラウザで開きます!をクリックし、[すべての利用可能なフィールド]を選択します.ステップボタンの横にある矢印ボタンを押すと、結果を得るよ!
今、我々は両方のクエリのすべてのフィールドを要求しているので、我々は機会をフラグメントを使用する必要があります!
通常、あなたは戻って行かなければならないでしょう
クエリ名の上にホバーする場合は、楕円を持つボタンを見ることができます.
をクリックして、あなたは、フラグメントがあなたのために、エクスプローラで右そこに生成されて参照してくださいよ!
今すぐあなたのすべてのフィールドを選択
再度クエリを実行し、必要な正確な結果を得るよ!
フィールドの選択と選択によってフラグメントを編集することもできます.
これは、あなたのスキーマにフィールドを追加すると言うと、とても便利です.
だから
私はあなたのGraphSQLのコーディング経験をスピードアップする方法を学んだことを願って!
Stezzenの他の機能に興味を持っている場合は、私たちのステップ禅スキーマエクスプローラで私たちのドキュメントをチェックアウトすることができます.そこには、アポロやギャツビーのクライアントコード、スキーマテンプレートのエクスポート、およびドキュメントのタブを生成するのに役立つエクスポートを含む、あなたのコーディングの経験を合理化する他の方法がたくさんあります.
私たちはあなたがStezenと何をしている知ってみよう!私たちはそれについて聞いてみたい.
あなたが以前に複数のGraphSQL質問を書いたならば、あなたは、複製されたコードが速く構築するのを知っています.幸いにも、Graphicsのスペックは、あなたのコードをトリムするためにフラグメントを定義しており、Stezenはあなたが速度でそれを助けるためのツールを持っています!
Note: This tutorial assumes the prerequisite of basic GraphQL knowledge: types and queries. You can read up on them on the official specification site.
どのようなグラフの断片ですか?
あなたが尋ねたうれしい!基本的に、GraphSQLフラグメントは開発者がDon't Repeat Yourself 原理.
によるとthe official spec , グラフの断片は
"the primary unit of composition in GraphQL."
つまり、それらが元素である、原子であることを意味します.コードをさらに減らすことはできません.このため、重複するコードを削除することを意味します.
しかし、断片が理論にどんなものであるかを知っていること、そして実際にそれらを使用するもう一つのことです.割れましょう!
あなたが私と一緒にしたがっているならば、あなたは2、3のものを必要とします.
スキーマの例
この例のスキーマは、1つのフォルダの下にある3つのファイルです.
繁殖するグラフ
type Breed {
temperament: String!
origin: String!
name: String
life_span: String
hairless: Int
rare: Int
}
type Query {
BreedById(id: String!): Breed
@rest(
endpoint: "https://api.thecatapi.com/v1/breeds/search?q=$id"
configuration: "cat_config"
)
allBreeds: [Breed]
@rest(
endpoint: "https://api.thecatapi.com/v1/breeds"
configuration: "cat_config"
)
}
breed.graphql
我々の品種タイプと我々の2つの質問を定義します.BreedById
and allBreeds
. cat APIのエンドポイントからデータを取得します.@rest
.To learn more about
@rest
, check out our docs.
Aに気づくでしょう
cat_config
問い合わせの名前configuration
仕様.これは次のファイルで定義されている設定を参照します.
設定。ヤル
configurationset:
- configuration:
name: cat_config
Authorization: Apikey {{YOUR_CAT_CONFIG_KEY_HERE}}
config.yaml
情報のステップは、cat APIに接続する必要が含まれます.最後に、
インデックス.グラフ
schema @sdl(files: ["breed.graphql"]) {
query: Query
}
スキーマエクスプローラーのオープン
Stezenには、Graphqlのクエリーエクスプローラがあります.Stezzenスキーマエクスプローラーではすべての種類のおいしい機能がありますが、今日、我々はフラグメントボタンに集中するつもりです.
エクスプローラを開くには
stepzen start
コマンドラインから.前にStezenを使用したことがない場合は、実行する必要がありますstepzen login
まず、あなたの資格情報を提供します.ステップZenエクスプローラエクスプローラをブラウザで開きます!をクリックし、[すべての利用可能なフィールド]を選択します.ステップボタンの横にある矢印ボタンを押すと、結果を得るよ!
今、我々は両方のクエリのすべてのフィールドを要求しているので、我々は機会をフラグメントを使用する必要があります!
通常、あなたは戻って行かなければならないでしょう
breed.graphql
のように書きます.fragment breedFields on Breed {
temperament
origin
name
life_span
hairless
rare
}
...しかし、それはStezen禅エディタで必要ではない!クエリ名の上にホバーする場合は、楕円を持つボタンを見ることができます.
...
) その上にをクリックして、あなたは、フラグメントがあなたのために、エクスプローラで右そこに生成されて参照してくださいよ!
今すぐあなたのすべてのフィールドを選択
allBreeds
と選択BreedFragment
.再度クエリを実行し、必要な正確な結果を得るよ!
フィールドの選択と選択によってフラグメントを編集することもできます.
これは、あなたのスキーマにフィールドを追加すると言うと、とても便利です.
country_code
, その後、それはすべてのあなたのフラグメントの定義だけではなく、ブラウザ内のすべての以前のクエリに追加するには、マウスのワンクリックです.だから
country_code
:type Breed {
temperament: String!
origin: String!
name: String
life_span: String
hairless: Int
rare: Int
country_code: String
}
以下のようにして、各クエリにaltnamesを追加する必要はありません:query MyQuery {
BreedById(id: "abys") {
temperament
rare
hairless
life_span
name
origin
country_code
}
allBreeds {
temperament
rare
hairless
life_span
name
origin
country_code
}
}
fragment BreedFragment on Breed {
temperament
rare
hairless
life_span
name
origin
country_code
}
あなたがしなければならないすべてはクリックするだけですcountry_code
あなたの品種フラグメントとこのコードでquery MyQuery {
BreedById(id: "abys") {
...BreedFragment
rare
}
allBreeds {
...BreedFragment
}
}
fragment BreedFragment on Breed {
temperament
rare
hairless
life_span
name
origin
country_code
}
このクエリは結果として得られるJSON ALT名を自動的に入力します.{
"data": {
"BreedById": {
"country_code": "EG",
"hairless": 0,
"life_span": "14 - 15",
"name": "Abyssinian",
"origin": "Egypt",
"rare": 0,
"temperament": "Active, Energetic, Independent, Intelligent, Gentle"
}, {...} etc
ここからどこへ行くか
私はあなたのGraphSQLのコーディング経験をスピードアップする方法を学んだことを願って!
Stezzenの他の機能に興味を持っている場合は、私たちのステップ禅スキーマエクスプローラで私たちのドキュメントをチェックアウトすることができます.そこには、アポロやギャツビーのクライアントコード、スキーマテンプレートのエクスポート、およびドキュメントのタブを生成するのに役立つエクスポートを含む、あなたのコーディングの経験を合理化する他の方法がたくさんあります.
私たちはあなたがStezenと何をしている知ってみよう!私たちはそれについて聞いてみたい.
Reference
この問題について(フラグメントを使用して、GraphSQLスキーマをクリーンアップする方法), 我々は、より多くの情報をここで見つけました https://dev.to/stepzen/how-to-use-fragments-to-clean-up-your-graphql-schemas-4o18テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol