最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

GraphQL 快速入門【1】簡介

2021-09-16 21:10 作者:信碼由韁  | 我要投稿

【注】本文節(jié)譯自:https://www.tutorialspoint.com/graphql/graphql_quick_guide.htm

? ? GraphQL 是 Facebook 開發(fā)的一種開源服務器端技術,用于優(yōu)化 RESTful API 調(diào)用。它是一種執(zhí)行引擎和一種數(shù)據(jù)查詢語言。在本章中,我們將討論使用 GraphQL 的優(yōu)勢。

為什么使用 GraphQL

? ??RESTful API 遵循清晰且結構良好的面向資源的方法。但是,當數(shù)據(jù)變得更復雜時,路由會變得更長。有時無法通過單個請求獲取數(shù)據(jù)。這就是 GraphQL 派上用場的地方。GraphQL 以圖的形式構建數(shù)據(jù),其強大的查詢語法用于遍歷、檢索和修改數(shù)據(jù)。

? ??以下是使用 GraphQL 查詢語言的優(yōu)勢:

詢問你想要的 - 并得到它

? ??向您的 API 發(fā)送 GraphQL 查詢并準確獲取您需要的內(nèi)容。GraphQL 查詢總是返回可預測的結果。使用 GraphQL 的應用程序且穩(wěn)定。與 Restful 服務不同,這些應用程序可以限制應該從服務器獲取的數(shù)據(jù)。

? ??以下示例將幫助您更好地理解這一點:

? ??讓我們考慮一個具有屬性 id、firstName、lastName CollegeName 的業(yè)務對象 Student。假設一個移動應用只需要獲取 firstName id。 如果我們設計一個像 /api/v1/students 這樣的 REST 端點,它最終會為一個?Student 對象的所有字段獲取數(shù)據(jù)。這意味著,數(shù)據(jù)被 RESTful 服務過度獲取。 這個問題可以通過使用 GraphQL 來解決。

? ??考慮下面給出的 GraphQL 查詢:

{

??students?{

????id

????firstName

??}

}

? ??這將僅返回 id 和 firstname 字段的值。該查詢不會獲取學生對象的其他屬性的值。上面說明的查詢的響應如下所示:

{

????"data":?{

????????"students":?[

????????????{

????????????????"id":?"S1001",

????????????????"firstName":?"Mohtashim"

????????????},

????????????{

????????????????"id":?"S1002",

????????????????"firstName":?"Kannan"

????????????}

????????]

????}

}

在單個請求中獲取多個資源

? ??GraphQL 查詢有助于順利檢索關聯(lián)的業(yè)務對象,而典型的 REST API 需要從多個 URL 加載。GraphQL API 在單個請求中獲取您的應用程序所需的所有數(shù)據(jù)。即使在緩慢的移動網(wǎng)絡連接上,使用 GraphQL 的應用程序也可以很快。

? ??讓我們再考慮一個業(yè)務對象 College,它具有以下屬性:名稱和位置。 Student 業(yè)務對象與 College 對象具有關聯(lián)關系。如果我們使用 REST API 來獲取學生及其大學的詳細信息,我們最終將向服務器發(fā)出兩個請求,如 /api/v1/students /api/v1/colleges。這將導致每個請求的數(shù)據(jù)獲取不足。 因此,移動應用被迫多次調(diào)用服務器以獲取所需的數(shù)據(jù)。

? ??但是,移動應用可以使用 GraphQL 在單個請求中獲取 Student 和 College 對象的詳細信息。

? ??以下是用于獲取數(shù)據(jù)的 GraphQL 查詢:

{

??students?{

????id

????firstName

????lastName

????college?{

??????name

??????location

????}

??}

}

? ??上述查詢的輸出正好包含我們要求的那些字段,如下所示:

{

????"data":?{

????????"students":?[

????????????{

????????????????"id":?"S1001",

????????????????"firstName":?"Mohtashim",

????????????????"lastName":?"Mohammad",

????????????????"college":?{

????????????????????"name":?"CUSAT",

????????????????????"location":?"Kerala"

????????????????}

????????????},

????????????{

????????????????"id":?"S1002",

????????????????"firstName":?"Kannan",

????????????????"lastName":?"Sudhakaran",

????????????????"college":?{

????????????????????"name":?"AMU",

????????????????????"location":?"Uttar?Pradesh"

????????????????}

????????????},

????????????{

????????????????"id":?"S1003",

????????????????"firstName":?"Kiran",

????????????????"lastName":?"Panigrahi",

????????????????"college":?{

????????????????????"name":?"AMU",

????????????????????"location":?"Uttar?Pradesh"

????????????????}

????????????}

????????]

????}

}

描述類型系統(tǒng)的可能性

? ??GraphQL 是強類型的,查詢基于字段及其關聯(lián)的數(shù)據(jù)類型。如果 GraphQL 查詢中存在類型不匹配,服務器應用程序會返回清晰且有用的錯誤消息。這有助于客戶端應用順利調(diào)試和輕松檢測錯誤。 GraphQL 還提供了客戶端庫,可以幫助減少顯式數(shù)據(jù)轉換和解析。

? ??下面給出了 Student College 數(shù)據(jù)類型的示例:

type?Query?{

??students:?[Student]

}

type?Student?{

??id:?ID!

??firstName:?String

??lastName:?String

??fullName:?String

??college:?College

}

type?College?{

??id:?ID!

??name:?String

??location:?String

??rating:?Float

??students:?[Student]

}

使用強大的開發(fā)工具更快地響應

? ??GraphQL 為文檔和測試查詢提供了豐富的開發(fā)工具。GraphiQL 是一個出色的工具,可以生成查詢及其模式的文檔。 它還提供了一個查詢編輯器,用于在構建查詢時測試 GraphQL API 和智能代碼完成功能。


GraphQL 快速入門【1】簡介的評論 (共 條)

分享到微博請遵守國家法律
井冈山市| 垫江县| 南郑县| 全椒县| 蓬莱市| 青川县| 钟祥市| 兴仁县| 泸西县| 东乡族自治县| 黎川县| 长治市| 金华市| 仁怀市| 甘孜| 康乐县| 武山县| 永年县| 中阳县| 运城市| 天津市| 福海县| 镇坪县| 专栏| 横山县| 山阴县| 邢台县| 伊宁县| 昆明市| 琼海市| 福鼎市| 曲阳县| 阿合奇县| 延长县| 凌源市| 金塔县| 小金县| 明水县| 米泉市| 确山县| 乌拉特前旗|