決して使用しないGraphSQL?恐れるな!
8800 ワード
この記事はGraphQL それはあなたがPragmalangと美しいAPIを構築を開始することができます.
GraphSQLとは
GraphSQLはFacebookによってリリースされ、2015年に標準化された言語仕様です.言語は、開発者にとってより簡単にフロントエンドアプリケーションからデータを取得するように設計されています.いくつかの利点は以下の通りです.
タイプセーフコミュニケーション:あなたは常にあなたが受信しているデータのタイプ/形状、サーバーが期待するデータの型を知っている.
標準的なドキュメント:すべてのGraphSQL APIはドキュメントに関してある標準に従わなければなりません.多くのツールは、このドキュメントを解釈する方法を知っていますintrospecting API.
GraphSQLは標準であるので、多くのツールはすべてのGraphSQL APIで動作するように設計されています.たとえば、GraphSQLスキーマに基づいたTypeScriptの定義を生成するツールなど、Webアプリケーションで使用されます.
データの非フェッチ/オーバーフェッチはありません.必要なデータを正確に選択し、単一のクエリ内で複数の操作を実行できます. GraphSQLは実際に2つの言語を1つにまとめる:スキーマ定義言語、およびクエリ言語です.
スキーマ定義言語
スキーマ定義言語は、APIが動作するデータの型を記述するために使用されるものであり、APIは、この型で行うことができるものです.例えば、
GraphSQL APIには、クライアントが実行できる3種類の操作があります. クエリ:データの簡単な検索 突然変異:既存のデータへの変更、または新しいデータの追加. サブスクリプション:時間をかけてDTAの検索. GraphSQL APIを開発する場合は、通常、サーバーが扱うことができるクエリ、突然変異、およびサブスクリプションを指定する必要があります.上の例では、サーバーは文字の名前をとる単一のクエリを実行できるだけです.しかし、ここでキャッチします.クエリを扱う* * * *を指定する必要があります.従来のGraphSQLフレームワークを使用すると、型の各フィールドをデータベースから取得する方法を指定するには、リゾルバとして知られているものを定義する必要があります.
クエリ言語
GraphSQL APIを作成したら、多くのGraphSQLクライアントを使用してサーバーに操作を送信できます.ほとんどのGraphSQL APIはGraphQL playground クエリを書くには、ボタンをクリックしてサーバーに送信し、JSON結果を表示できます.しかし、グラフィカルなアプリケーションを構築しているとき、あなたはclient library あなたのコードから.クエリの例は次のようになります.
プラグマはどこに入りますか.
GraphSQL APIを開発している場合は、必要な操作と型をすべてスキーマで指定し、これらの操作に対してリゾルバを実装する必要があります.もちろん、データベースを最初に設定する必要があります.
pragmaとは、pragmaスキーマを定義するだけでよいことです.それだ!これは、データベース、GraphSQLスキーマ、および必要なすべての操作を生成します.さらに、非常に単純な構文では、これらの操作の機能を
上記のスキーマを実行することにより、pragmaによって生成されたGraphSQL APIを探索することができますInstall Pragma ), または別の例をチェックアウトすることができますThe Generated API ドキュメントのセクション.
ご質問やご意見がございましたら、ご参加くださいDiscord channel , またはコメントを残す!
あなたが先週持っていた新しいアイデアを作り始める!数分しかかかりません
GraphSQLとは
GraphSQLはFacebookによってリリースされ、2015年に標準化された言語仕様です.言語は、開発者にとってより簡単にフロントエンドアプリケーションからデータを取得するように設計されています.いくつかの利点は以下の通りです.
タイプセーフコミュニケーション:あなたは常にあなたが受信しているデータのタイプ/形状、サーバーが期待するデータの型を知っている.
標準的なドキュメント:すべてのGraphSQL APIはドキュメントに関してある標準に従わなければなりません.多くのツールは、このドキュメントを解釈する方法を知っていますintrospecting API.
GraphSQLは標準であるので、多くのツールはすべてのGraphSQL APIで動作するように設計されています.たとえば、GraphSQLスキーマに基づいたTypeScriptの定義を生成するツールなど、Webアプリケーションで使用されます.
データの非フェッチ/オーバーフェッチはありません.必要なデータを正確に選択し、単一のクエリ内で複数の操作を実行できます.
スキーマ定義言語
スキーマ定義言語は、APIが動作するデータの型を記述するために使用されるものであり、APIは、この型で行うことができるものです.例えば、
# This is a type definition
type Character {
name: String! # '!' means "required" or "not nullable"
friends: [Character] # '[]' mean "array". Types can be recursive
homeWorld: Planet! # Types can relate to each other
}
# Another type definition
type Planet {
name: String!
climate: String!
}
# A special type definition that specifies
# the queries that a client can perform
type Query {
getCharacter(name: String!): Character
# ^^^^^^^^^^^^^ ^^^^^^^^^
# Query Arguments Query Return Type
# Note that the return type is `Character`, not `Character!`
}
Comments in schema definitions are typically used for documentation. Comments in the example above were used for clarification purposes.
GraphSQL APIには、クライアントが実行できる3種類の操作があります.
クエリ言語
GraphSQL APIを作成したら、多くのGraphSQLクライアントを使用してサーバーに操作を送信できます.ほとんどのGraphSQL APIはGraphQL playground クエリを書くには、ボタンをクリックしてサーバーに送信し、JSON結果を表示できます.しかし、グラフィカルなアプリケーションを構築しているとき、あなたはclient library あなたのコードから.クエリの例は次のようになります.
query {
rick:getCharacter(name: "Rick Sanchez") { # We gave the operation a 'rick' alias
name # Rick's name, just to make sure
friends {
name # We only want their names
}
homeWorld {
name # We only want the name
}
}
}
このクエリ-もしリックがデータベースに存在するなら、{
"rick": {
"name": "Rick Sanchez",
"friends": [],
"homeWorld": {
"name": "Earth"
}
}
}
Rick's
friends
array is empty because he has no friends.
プラグマはどこに入りますか.
GraphSQL APIを開発している場合は、必要な操作と型をすべてスキーマで指定し、これらの操作に対してリゾルバを実装する必要があります.もちろん、データベースを最初に設定する必要があります.
pragmaとは、pragmaスキーマを定義するだけでよいことです.それだ!これは、データベース、GraphSQLスキーマ、および必要なすべての操作を生成します.さらに、非常に単純な構文では、これらの操作の機能を
import
ライブラリから通常の関数を使用しているかのように.以下はpragmaスキーマの例です.config { projectName = "character_api" }
@1 model Character {
@1 name: String @primary
@2 friends: [Character]
@3 homeWorld: Planet
}
@2 model Planet {
@1 name: String
@2 climate: String
}
PragmaスキーマとGraphSQLスキーマの小さな違いに注意してください.pragmaでは、type
はmodel
. モデルとモデルフィールドはユニークなインデックスを必要とする.@1
, @5
), これにより、スキーマへの変更に基づいて自動的に大部分のデータベース移行を実行することができます.上記のスキーマを実行することにより、pragmaによって生成されたGraphSQL APIを探索することができますInstall Pragma ), または別の例をチェックアウトすることができますThe Generated API ドキュメントのセクション.
ご質問やご意見がございましたら、ご参加くださいDiscord channel , またはコメントを残す!
あなたが先週持っていた新しいアイデアを作り始める!数分しかかかりません
Reference
この問題について(決して使用しないGraphSQL?恐れるな!), 我々は、より多くの情報をここで見つけました https://dev.to/pragmalang/never-used-graphql-fear-not-46ofテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol