GraphQL 優勢之處

  • 2019 年 10 月 5 日
  • 筆記

一次查詢,搞定需求

舉個例子,Book對象有bookTypeId,那我想看對應的bookTypeName,bookType對應的summary咋辦? 如果你用RESTful Api ,免不了要定製接口或者多次調用後端。 現在用上GraphQL,就是這麼無情:

#查詢語句  query add{      book(bookId: 1){      bookName      author      bookType{        typeId        typeName        summary      }      wordNumbers      cover      clickTimes      lastupdate      createtime    }  }  #結果  {    "data": {      "book": {        "bookName": "斗戰狂潮",        "author": "骷髏精靈",        "bookType": {          "typeId": "48",          "typeName": "修真文明",          "summary": "修仙覓長生,熱血任逍遙,踏蓮曳波滌劍骨,憑虛御風塑聖魂!"        },        "wordNumbers": 2547900,        "cover": "//qidian.qpic.cn/qdbimg/349573/1003694333/180",        "clickTimes": 3,        "lastupdate": "2018-02-23T00:00:00",        "createtime": "2018-02-23T11:33:57"      }    }  }

sql語句?各種定製化接口?不存在的,一個GraphQL查詢搞定,美滋滋。

繼續來一發,排行榜表和作品表,排行榜表記錄了book_id,前端展示只需這樣:

query rank {    rankList(rankTypeId: 1,first: 2) {      edges {        node {          bookId          book {            bookName            author            wordNumbers          }          order          rankTypeId          createtime        }      }    }  }  **自動根據節點id查詢對應node信息,多帥哦**  {    "data": {      "rankList": {        "edges": [          {            "node": {              "bookId": 1,              "book": {                "bookName": "斗戰狂潮",                "author": "骷髏精靈",                "wordNumbers": 2547900              },              "order": 1,              "rankTypeId": 1,              "createtime": "2018-02-24T00:28:37"            }          },          {            "node": {              "bookId": 2,              "book": {                "bookName": "就問你氣不氣",                "author": "秋刀斬魚",                "wordNumbers": 1736500              },              "order": 2,              "rankTypeId": 1,              "createtime": "2018-02-24T00:32:23"            }          }        ]      }    }  }

這麼寫下來,GraphQL果然還是很不錯的。。 上個鏈接GraphQL