iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
0
Modern Web

30天精通Api (REST vs GraphQL)系列 第 7

Day07 - 該使用GraphQL嗎? GraphQL優缺點比較

GraphQL解決了Restful API問題,但卻紅不起來?

前幾天寫到的REST 優缺點說到關於GraphQL解決了Restful API最大的複雜查詢與資源相依問題,但為何卻一直紅不起來呢?讓我們一起來看看GraphQL優缺點吧!

優點

  1. 解決複雜查詢問題
    GraphQL 只需要單一接口 (entry point) 操作多資源與 Restful 的多接口操作單一資源,面對於前端龐大的 API 需求,越來越多的接口讓人難以管理,更增加發送 request 的次數。

假設你要查詢你的朋友是誰
Restful API 會這樣說 : Get /user/:userId/friends/ ,然後回傳了20個朋友userId,但你又想繼續查你朋友有哪個朋友所以你用了回傳的userId去搜尋同樣的API,就這樣不停的call API直到找到朋友的朋友的朋友.....
或是...設計一個API叫做 Get /user/:userId/friendsAndHisFriends/ ??? 很怪吧?

那GraphQL呢?
一個查詢即可搞定!

query ($userId: ID) {
    user(id: $userId) {
        name
        friends {
            name
            friends {
                name
            }
        }
    }
}
  1. Schema強型別
    你知我知獨眼龍也知JS是個弱型別語言,GraphQL的Schema讓型別錯就會直接回報錯誤,有五種Scalar Types可使用
  • Int:有符号 32 位整数。
  • Float:有符号双精度浮点值。
  • String:UTF‐8 字符序列。
  • Boolean:true 或者 false。
  • ID:ID 标量类型表示一个唯一标识符,通常用以重新获取对象或者作为缓存中的键。ID 类型使用和 String 一样的方式序列化;然而将其定义为 ID 意味着并不需要人类可读型。

下一篇會提到GraphQL缺點


上一篇
Day06 - 開始認識GraphQL
下一篇
Day09 - 如何打造GraphQL API (1) Server端與工具
系列文
30天精通Api (REST vs GraphQL)12

尚未有邦友留言

立即登入留言