最近看了一個項目用到了GraphQL
官網(wǎng)地址在這里哈,https://graphql.org/笋除,簡單說GraphQL是一種提供api接口的方式垃它。
之前接觸比較多的是restful api
什么是restful 接口国拇?
簡單說就是一句話action + url = 一個資源
action是指http的method惯殊,即get土思,post己儒,delete等,url不用說了吧该镣,可以帶參數(shù)损合,也可以不帶嫁审,這就是restful接口律适,
它的特點和缺點是:
1遏插、接口返回的一般是json格式的數(shù)據(jù)
2胳嘲、一個應(yīng)用往往需要請求很多的資源了牛,那么就有很多的url鹰祸,在實際開發(fā)的過程中,前端同學往往希望后端接口能整合的盡量整合粗井,不要弄那么多接口背传;
3径玖、有些資源很難整合到一個接口梳星,前端通常需要請求多次滚朵,有時為了獲取一點點數(shù)據(jù)辕近,要請求一個返回大量數(shù)據(jù)的接口移宅,前端再過濾
GraphQL又是什么
GraphQL粗淺的理解就是所有的請求都用一個url,并且都是post方法届榄,秘密在于post的body倔喂,它使用了一種特殊的描述語言席噩,來描述你的請求意圖悼枢,這種特殊的語言也是一種協(xié)議萧芙,前后端都要理解這種協(xié)議双揪。
說協(xié)議可能有點抽象渔期,其實就是類似mlsql,engine提供一個提交sql的http接口拘哨,然后返回結(jié)果倦青,我們的數(shù)據(jù)處理意圖都通過sql描述产镐,背后有一套語言解釋器和具體的執(zhí)行邏輯癣亚,GraphQL也是如此述雾。