GraphQLについて
NAVER Instanceでは、かなりの
したがって、クライアントが
実は双方の存在目的はあまり違わない.クライアントがデータを要求すると、サーバはデータに応答してクライアントに渡します.
しかし、明らかな違いがあります.エンドポイント:
端点の意味を見てみましょう.
クライアントが
関数を使用して複数のクエリーを一度に処理する方法を
この変化により、フロントエンド開発者は、バックエンドの従来のAPI要求/応答方法への依存を低減し、フロントエンド開発者がフロントエンドに必要なデータ要求/応答方式を独自にカスタマイズし、効率的なリソースで作業することができる.
クライアントでは、サーバ定義のモードに基づいてクエリー文を自由に作成し、サーバに正常に到達できます.この場合、サーバはこのクエリ文をどのように処理しますか?
node.jsとmongodb環境に基づくまず、受信したクエリ文をグループ化する必要があります.しかし、幸いなことに、 の後、各クエリに所定の
左利きの戻り値は、他の左利きの出力データの1つとして使用できることに注意してください.したがって、同じタイプのデータを呼び出す場合、このように最適化することができる.
例を見てみましょう.
データベースに直接要求できますが、httpを使用してデータを取得したり、さまざまな方法でデータをインポートしたりできます.この左利きの拡張性は、残されたコードの移行を支援します.
ここにはクエリー用のIDEがあり、このモードを非常に美しく整理しています.
グラウンド(apolloサーバライブラリ)
クライアントがクエリー の作成クエリーサーバに送信され、応答 が受信される.変更されたデータ応答コンポーネントでステータス を管理する.
Apolloクライアント.
1つの関数は、
reference https://tech.kakao.com/2019/08/01/graphql-basic/ https://www.apollographql.com/docs/react
GraphQL
を使用しています.reactベースのビューに必要なデータは、GraphQL
+24579142の組合せによって呼び出される.しかし、使うよりも根本的な理解があるのではないかと疑う人もいるので、この機会に整理しておきたいと思います.GraphQLは
Apollo
は、Webクライアントがサーバから効率的にデータを取得するために作成したクエリー言語である.したがって、クライアントが
graphql
によって作成されたクエリーをサーバ側に移行すると、サーバはクエリーを受信して処理し、結果をクライアントに返します.Rest APIとの比較
実は双方の存在目的はあまり違わない.クライアントがデータを要求すると、サーバはデータに応答してクライアントに渡します.
しかし、明らかな違いがあります.
gql
はurlとメソッドの組合せであり、複数のエンドポイントがある.Rest API
は、各モードタイプのクエリが異なるため、エンドポイントを有する.GraphQLクエリー
端点の意味を見てみましょう.
クライアントが
gql
言語でクエリー文を記述し、サーバ側に送信することを理解しました.では、クエリー文を作成するにはどうすればいいのでしょうか.例を見てみましょう.query getStudentInfomation($studentId: ID){
personalInfo(studentId: $studentId) {
name
address1
address2
major
}
classInfo(year: 2018, studentId: $studentId) {
classCode
className
teacher {
name
major
}
classRoom {
id
maintainer {
name
}
}
}
SATInfo(schoolCode: 0412, studentId: $studentId) {
totalScore
dueDate
}
}
gql
は、Rest API
という名前のクライアント側で作成されたstudentId
であり、input
のような対応するデータを要求している.しかし、いくつかの特別な点があります.要求されたデータには多くの種類があります.personalInfo
、classInfo
、およびSATInfo
は、これら3つのデータ情報を同時に要求する.Rest API
なら/personalInfo?studentId=123
/classInfo?studentId=123
3回の要求が必要であるが、gql
は、1つのエンドポイントに必要な様々なデータを要求することによって、効率的な呼び出しを実現することができる.関数を使用して複数のクエリーを一度に処理する方法を
오퍼레이션 네임 쿼리
と呼びます.この変化により、フロントエンド開発者は、バックエンドの従来のAPI要求/応答方法への依存を低減し、フロントエンド開発者がフロントエンドに必要なデータ要求/応答方式を独自にカスタマイズし、効率的なリソースで作業することができる.
受信したクエリー文の処理
クライアントでは、サーバ定義のモードに基づいてクエリー文を自由に作成し、サーバに正常に到達できます.この場合、サーバはこのクエリ文をどのように処理しますか?
node.jsとmongodb環境に基づく
gql
ライブラリはパーティション化を支援することができます.input
があり、アーキテクチャに表示されるデータを返すように、サーバに関数を作成する必要があります.この関数は리졸버
と呼ばれます.左利きの戻り値は、他の左利きの出力データの1つとして使用できることに注意してください.したがって、同じタイプのデータを呼び出す場合、このように最適化することができる.
// user(id: ID)가 paymentsByUser(userId: ID) 안에서 호출될 수 있음
type Query {
users: [User]
user(id: ID): User
limits: [Limit]
limit(UserId: ID): Limit
paymentsByUser(userId: ID): [Payment]
}
type Payment {
id: ID!
limit: Limit!
user: User!
pg: PaymentGateway!
productName: String!
amount: Int!
ref: String
createdAt: String!
updatedAt: String!
}
리졸버
は、データベースと通信し、モードの出力データ型に応じて、要求されたデータをデータベースから取得するか、変更(作成、更新、または削除)を実行する必要があります.例を見てみましょう.
export const getFood = async (_, { getFoodInput: { foodID: _id } }) => {
try {
const foodList = await Trip.find({ _id })
if (!(foodList?.length > 0)) return null
return foodList
} catch (err) {
throw new Error(err)
}
}
クライアントから受信したfoodID
を使用して、mongoDB
のfoodList
を検索し、データを返します.このとき、mongoose
を非同期関数として利用する.データベースに直接要求できますが、httpを使用してデータを取得したり、さまざまな方法でデータをインポートしたりできます.この左利きの拡張性は、残されたコードの移行を支援します.
サーバ-クライアントコラボレーション
Rest API
とは異なり、クライアントはAPIリストを必要とせず、モードを使用するだけでクエリー文を作成できます.ここにはクエリー用のIDEがあり、このモードを非常に美しく整理しています.
グラウンド(apolloサーバライブラリ)
クライアントがGraphQLを使用する方法(インタラクティブ環境)
クライアントが
gql
を使用することは、次のことを意味します.クエリー文の作成
playground
などのツールを使用してモードを表示し、必要に応じてデータを組み合わせてクエリー文を作成します.クエリー・サーバに送信され、応答が得られます。
Rest API
と同様に、サーバとの通信はhttp
である.クエリ文はFetch
関数で渡すことができますが、より直感的で抽象的なライブラリがあります.Apolloクライアント.
gql
を使用してクエリーされたデータステータス管理ライブラリ.1つの関数は、
Apollo client
のhookを使用してクライアントからサーバに要求されたデータクエリーを使用します.const { loading, error, data } = useQuery(GET_DOGS);
この場合、クエリのデータはApollo Cache
という名前のストレージに格納されなければならず、次のクエリが発生した場合、まずApollo Cache
を参照して、不要なサーバ呼び出しを回避する.変更されたデータ・レスポンス・コンポーネントでのステータスの管理
Apollo client
のhookはReact hook
であるため、クエリの値が変化すると、再レンダリングはすぐにUIの変化を引き起こす.reference
Reference
この問題について(GraphQLについて), 我々は、より多くの情報をここで見つけました https://velog.io/@cramming/GraphQL의-이해テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol