[GraphQL] graphQL
What is GraphQL?
Graphでデータを表す言語であり、Runtimeでもある.QLのQuery Languageではクエリ言語と考えられる.実際、フロントエンドはAPIデータをクエリーする言語です.しかし、バックエンドではRuntimeレイヤの役割も果たします.
Why GraphQL?
REST APIは存在するが、なぜGraphQLを使用するのかは、GraphQLの利点が標準であるためである.Swagerを使用しなくても、GraphQLはschemaを介してドキュメントを介してAPIの機能範囲を公開します.また、スナップや欠スナップは発生しません.(クエリで必要なデータを抽出できるため)とEndPoint.決定的に、グラフィック構造を使用して新しいノードのみを追加すると、バージョンが管理されます.モバイルクライアントがアプリケーションをインストールした後、APIを更新しない限り、GraphQLはこの問題を解決することができます.ただし,古いノードを扱うとともに,それをメンテナンスする.
GraphQL API
{
person(personID: 4){
name
birthYear
}
}
上記クエリ要求IDが4のpersonのnameとbirthYear.
ドキュメント
基本的なGraphQLリクエストをドキュメントと呼びます.ドキュメントには、Query、Variation、Subscribe、fragmentが含まれます.変数とmeta-dataも含まれます.query GetEmployees($active: Boolean!){
allEmployees(active: $active){
...employeeInfo
}
}
fragment employeeInfo on Employee {
name
email
startDate
}
query
GraphQLでは、Queryは読み取り専用でデータを抽出します.
mutation
GraphQLでは,突然変異はデータを変更した後に抽出される.
subscription
GraphQLでは、subscriptionがデータの変更をリアルタイムで受信し、socket通信を行う.データポーリングよりも有効です.
フィールド
GraphQLでは、Fieldは抽出するオブジェクトの各情報単位を記述する.scalaフィールドはqueryのリーフ値を表します.スカラータイプはInt、String、Float、Booleanです.{
me { # 객체를 기술한 필드
email #스칼라 필드
birthday { # 객체를 기술한 필드
month # 스칼라 필드
year # 스칼라 필드
}
friends { #객체를 기술한 필드
name # 스칼라 필드
}
}
}
meta field
typeまたはschemaのRoot Fieldで始まるフィールドをMetafieldと呼びます.このクエリを内向クエリと呼びます.
上記のクエリは、モードがサポートするすべてのタイプを返し、各タイプの説明を含みます.
typeを使用して、単一のタイプの情報をチェックします.
上記のクエリは、Commitタイプをサポートするすべてのフィールドを返し、引数が付きます.
レコードの指定
単一レコードの指定
query UserInfo {
user(email: "[email protected]") {
firstName
lastName
username
}
}
userフィールドカッコのemailをフィールドパラメータ(fieldarguments)と呼びます.
単一のレコードを表します.パラメータ値はデータベースに存在する一意の値でなければなりません.
GraphQLは、すべてのオブジェクトを単一のレコードフィールドとして管理します.query OrgInfo {
organization(login: 'jscomplete') {
name
description
websiteUrl
repositoies (first: 10){
nodes {
name
}
}
}
}
上のハブAPI(az.dev/github.api)では、user、repository、project、organizationが単一のレコードフィールドに対応します.
制限レコード数は、自己変数(firstまたはlast)によって制限することができる.
ソートレコード
レコードのソートには、created at、upated at、pushd at、Name、Stargazerなどの異なるフィールドを使用してソートできます.(github apiで)query orgReposByName {
organization(login: "jscomplete") {
repositories(first: 10, orderBy: {field: NAME, direction: ASC}) {
node {
name
}
}
}
}
edgeフィールドの使用
...
edges {
cursor
node {
name
}
}
親ノードとしてedgeフィールドを追加すると、ページングレコードのリストが表示されます.この場合,Connectionとは相互に接続するノードのことである.(図の関係の例)
検索とフィルタ
graphqlは、フィールド引数によってフィルタ条件またはクエリーを指定することで、リストが結果を返す範囲を縮小できます.
命令変更応答の使用
@で始まる文字列を使用します.すべてのschemaでは、@include、@skip、および@deprecatedの3つの基本命令を使用できます.query AllDirectives {
__schema {//내향성쿼리
directives {
name
description
locations
args {
name
description
defaultValue
}
}
}
}
コンテンツの結果から,@includeや@skipはifなどの条件を引数として必要とし,@deprecated命令はresourceという引数を必要とする.
へんすう
繰り返し使用する値がある場合は、ハードコーディングを防止するために変数を使用します.したがって、クエリーは再使用できます.前に$を追加したり、宣言タイプを追加したり、値を代入したりできます.
Reference
この問題について([GraphQL] graphQL), 我々は、より多くの情報をここで見つけました
https://velog.io/@minai/GraphQL-graphQL
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
REST APIは存在するが、なぜGraphQLを使用するのかは、GraphQLの利点が標準であるためである.Swagerを使用しなくても、GraphQLはschemaを介してドキュメントを介してAPIの機能範囲を公開します.また、スナップや欠スナップは発生しません.(クエリで必要なデータを抽出できるため)とEndPoint.決定的に、グラフィック構造を使用して新しいノードのみを追加すると、バージョンが管理されます.モバイルクライアントがアプリケーションをインストールした後、APIを更新しない限り、GraphQLはこの問題を解決することができます.ただし,古いノードを扱うとともに,それをメンテナンスする.
GraphQL API
{
person(personID: 4){
name
birthYear
}
}
上記クエリ要求IDが4のpersonのnameとbirthYear.ドキュメント
基本的なGraphQLリクエストをドキュメントと呼びます.ドキュメントには、Query、Variation、Subscribe、fragmentが含まれます.変数とmeta-dataも含まれます.
query GetEmployees($active: Boolean!){
allEmployees(active: $active){
...employeeInfo
}
}
fragment employeeInfo on Employee {
name
email
startDate
}
query
GraphQLでは、Queryは読み取り専用でデータを抽出します.
mutation
GraphQLでは,突然変異はデータを変更した後に抽出される.
subscription
GraphQLでは、subscriptionがデータの変更をリアルタイムで受信し、socket通信を行う.データポーリングよりも有効です.
フィールド
GraphQLでは、Fieldは抽出するオブジェクトの各情報単位を記述する.scalaフィールドはqueryのリーフ値を表します.スカラータイプはInt、String、Float、Booleanです.
{
me { # 객체를 기술한 필드
email #스칼라 필드
birthday { # 객체를 기술한 필드
month # 스칼라 필드
year # 스칼라 필드
}
friends { #객체를 기술한 필드
name # 스칼라 필드
}
}
}
meta field
typeまたはschemaのRoot Fieldで始まるフィールドをMetafieldと呼びます.このクエリを内向クエリと呼びます.
上記のクエリは、モードがサポートするすべてのタイプを返し、各タイプの説明を含みます.
typeを使用して、単一のタイプの情報をチェックします.
上記のクエリは、Commitタイプをサポートするすべてのフィールドを返し、引数が付きます.
レコードの指定
単一レコードの指定
query UserInfo {
user(email: "[email protected]") {
firstName
lastName
username
}
}
userフィールドカッコのemailをフィールドパラメータ(fieldarguments)と呼びます.単一のレコードを表します.パラメータ値はデータベースに存在する一意の値でなければなりません.
GraphQLは、すべてのオブジェクトを単一のレコードフィールドとして管理します.
query OrgInfo {
organization(login: 'jscomplete') {
name
description
websiteUrl
repositoies (first: 10){
nodes {
name
}
}
}
}
上のハブAPI(az.dev/github.api)では、user、repository、project、organizationが単一のレコードフィールドに対応します.制限レコード数は、自己変数(firstまたはlast)によって制限することができる.
ソートレコード
レコードのソートには、created at、upated at、pushd at、Name、Stargazerなどの異なるフィールドを使用してソートできます.(github apiで)
query orgReposByName {
organization(login: "jscomplete") {
repositories(first: 10, orderBy: {field: NAME, direction: ASC}) {
node {
name
}
}
}
}
edgeフィールドの使用
...
edges {
cursor
node {
name
}
}
親ノードとしてedgeフィールドを追加すると、ページングレコードのリストが表示されます.この場合,Connectionとは相互に接続するノードのことである.(図の関係の例)検索とフィルタ
graphqlは、フィールド引数によってフィルタ条件またはクエリーを指定することで、リストが結果を返す範囲を縮小できます.
命令変更応答の使用
@で始まる文字列を使用します.すべてのschemaでは、@include、@skip、および@deprecatedの3つの基本命令を使用できます.
query AllDirectives {
__schema {//내향성쿼리
directives {
name
description
locations
args {
name
description
defaultValue
}
}
}
}
コンテンツの結果から,@includeや@skipはifなどの条件を引数として必要とし,@deprecated命令はresourceという引数を必要とする.へんすう
繰り返し使用する値がある場合は、ハードコーディングを防止するために変数を使用します.したがって、クエリーは再使用できます.前に$を追加したり、宣言タイプを追加したり、値を代入したりできます.
Reference
この問題について([GraphQL] graphQL), 我々は、より多くの情報をここで見つけました https://velog.io/@minai/GraphQL-graphQLテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol