GraphQL 1-GraphQLの概念
2483 ワード
参考資料1 https://youtu.be/9BIXcXHsj0A
参考資料2 https://www.yalco.kr/lectures/graphql-apollo/
Overfetching
1つの端点で1つの値を取得すると、不要な情報が一緒に多く発生します.このように情報を過度に取得することをOverfetchingと呼ぶ.
Underfetching
たとえば、チームの情報とチームメンバーの情報を取得するには、エンドポイントでチームを要求し、エンドポイントでチームInfoを要求する必要があります.overfetchingとは逆に,今回取得した情報はより少ない.この現象を欠取と呼ぶ.
GraphQLはgetの役割のように、情報を検索する際にquery~を使用してリクエスト、情報を送信、修正、削除する際にmutation~を使用します.
GraphQLは、必要な情報のみを取得することで、キャプチャの問題を解決します.
参考資料2 https://www.yalco.kr/lectures/graphql-apollo/
従来のREST APIの欠点
Overfetching
1つの端点で1つの値を取得すると、不要な情報が一緒に多く発生します.このように情報を過度に取得することをOverfetchingと呼ぶ.
Underfetching
たとえば、チームの情報とチームメンバーの情報を取得するには、エンドポイントでチームを要求し、エンドポイントでチームInfoを要求する必要があります.overfetchingとは逆に,今回取得した情報はより少ない.この現象を欠取と呼ぶ.
グラフィックQLを用いてREST APIの欠点を解決する
GraphQLはgetの役割のように、情報を検索する際にquery~を使用してリクエスト、情報を送信、修正、削除する際にmutation~を使用します.
GraphQLは、必要な情報のみを取得することで、キャプチャの問題を解決します.
1.
query {
teams { //팀들의 manager, office 정보만 가져오기
manager
office
}
}
2.
query {
team(id: 1) { //1번 팀의 manager, office 정보만 가져오기
manager
office
}
}
また、次の情報を複数回要求することなく、1回の要求で未キャプチャ問題を解決することができる.query {
team(id: 1) {
manager
office
members {
first_name
last_name
}
}
}
//1번 팀 정보와 해당 팀 멤버들의 정보 가져오기
//post
mutation {
postTeam (input: {
manager: "John Smith"
office: "104B"
extension_number: "#9982"
mascot: "Dragon"
cleaning_duty: "Monday"
project: "Lordaeron"
}) {
manager
office
extension_number
mascot
cleaning_duty
project
}
}
//edit
mutation {
editTeam(id: 2, input: {
manager: "Maruchi Han"
office: "105A"
extension_number: "2315"
mascot: "Direwolf"
cleaning_duty: "Wednesday"
project: "Haemosu"
}) {
id,
manager,
office,
extension_number,
mascot,
cleaning_duty,
project
}
}
//delete
mutation {
deleteTeam(id: 3) {
id,
manager,
office,
extension_number,
mascot,
cleaning_duty,
project
}
}
別のエンドポイントでは、post操作ですべてのリクエストを実行できます.Reference
この問題について(GraphQL 1-GraphQLの概念), 我々は、より多くの情報をここで見つけました https://velog.io/@hey880/GraphQL-수정중-テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol