iT邦幫忙

2022 iThome 鐵人賽

DAY 8
1

前幾天都簡單帶大家了解什麼是Rest及Restful API 設計規範,那不免俗也要介紹現在流行的GraphQL

簡單來說,GraphQL(query language) 也是一種設計規範,並非是框架或語言,
Day7範例的FastAPI就是框架,Python是語言

  • GraphQL
API 說明 Restful
POST /icegraphql 取得所有冰塊的價格資料 GET /api/getIces
POST /icegraphql 取得冰塊編號111的個別資料 GET /api/getIces/:IceId
  • 誒不對呀!API怎麼都一樣?那呼叫出來的東西不就一樣嗎?
    • GraphQL是透過讓CLient端能夠更直覺的去查詢或是修改所需要的數據,因此只要呼叫單個API /icegraphql,剩下要看需要什麼資料接著去query指定的資料,他通常都是用POST 以及傳入 Json Body

    • 範例1. 取得所有冰塊的價格資料

    # call /icegraphql
    query {
       IceInfo {
           IceID
           IcePrice
       }
    }
    
    • 範例2. 取得冰塊編號111的個別資料
    # call /icegraphql
    query {
       IceInfo (IceID: "111"){
           IceID
           IcePrice
       }
    }
    
  • 這時候我們好好想想,如果使用Restful API的風格是不是就要維護兩隻API,這時GraphQL 的便利性及可擴展性是不是就覺得相當不錯

GraphQL’s power comes from a simple idea — instead of defining the structure of responses on the server, the flexibility is given to the client.
Petr Bela

  • 圖片中,就可以更明確的看出兩種設計方案的差異!

    圖片來源

  • 直接來個業界應用範例,讓大家瞧瞧看

  1. rakuten 樂天市場

    • 打開network一目瞭然
    • payload 中去query需要的資料
    • 自己用postman 呼叫試試看
  2. line購物

    • 他是後面還會接參數還有加密,就看不到實際query的資料,但都一樣是呼叫單一API

參考資料

  1. GraphQL in the age of REST APIs
  2. 初識 GraphQL
  3. GraphQL 入門: 簡介 X 範例 X 優缺點

上一篇
[Day7] 簡單搞懂Restful API Python 實作範例
下一篇
[Day9] 簡單搞懂GraphQl API Python 實作範例
系列文
剛入職軟體工程師會需要知道的常見工具篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言