Graphql簡述

最近在和好友聊天的過程中,突然感覺自己真的是個弟弟奧
聊天過程中提到了一個尷尬的瞬間


WechatIMG216.png

哎,進入正題吧
首先介紹下什么是Graphql明郭?

根據(jù)官網(wǎng)的解釋就是一種用于 API 的查詢語言    
ask exactly what you want.

那我們?yōu)槭裁葱枰褂肎raphql 呢扩灯?

1、兼容多平臺導致字段冗余
2敞峭、一個頁面需要多次調(diào)用 API 聚合數(shù)據(jù)
3、需求經(jīng)常改動導致接口很難為單一接口精簡邏輯

下面我們通過一個簡單的demo來稍微了解下Graphql吧~

1、新建一個graphql文件夾瞬浓,然后在該目錄下打開終端,執(zhí)行npm init --y初始化一個packjson文件蓬坡。
2猿棉、安裝依賴包:npm install --save -D express express-graphql graphql
3磅叛、新建sehema.js文件,填上下面的代碼

代碼如下:

WX20191112-142301.png

然后同級目錄下新建server.js 代碼如下:
WX20191112-142601.png

這部分代碼是用express跑起來一個服務器萨赁,并通過express-graphql把graphql掛載到服務器上宪躯。
運行一下node server,并打開http://localhost:8000/
WechatIMG212.png

如果我想每次查詢都想帶上一個參數(shù)該怎么辦位迂,如果我想查詢結(jié)果有多條數(shù)據(jù)又怎么處理访雪?
我們新增一個sehemaSuper.js文件
代碼如下

const {
    GraphQLSchema,
    GraphQLObjectType,
    GraphQLString,
    GraphQLInt,
    GraphQLBoolean
} = require('graphql');
//稍微復雜一點的  查詢?nèi)?shù)據(jù)帶參數(shù)的寫法 多條數(shù)據(jù)
const queryObj = new GraphQLObjectType({
    name: 'myFirstQuery',
    description: 'a hello world demo',
    fields: {
        hello: {
            name: 'a hello world query',
            description: 'a hello world demo',
            type: GraphQLString,
            args: {
                name: {
                    // 這里定義參數(shù),包括參數(shù)類型和默認值
                    type: GraphQLString,
                    defaultValue: 'Brian'
                }
            },
            resolve(parentValue, args, request) {
                // 這里演示如何獲取參數(shù)掂林,以及處理
                return 'hello world ' + args.name + '!';
            }
        },
        person: {
            name: 'personQuery',
            description: 'query a person',
            type: new GraphQLObjectType({
                // 這里定義查詢結(jié)果包含name,age,sex三個字段臣缀,并且都是不同的類型。
                name: 'person',
                fields: {
                    name: {
                        type: GraphQLString
                    },
                    age: {
                        type: GraphQLInt
                    },
                    sex: {
                        type: GraphQLBoolean
                    }
                }
            }),
            args: {
                name: {
                    type: GraphQLString,
                    defaultValue: 'Charming'
                }
            },
            resolve(parentValue, args, request) {
                return {
                    name: args.name,
                    age: args.name.length,
                    sex: Math.random() > 0.5
                };
            }
        }
    }
});

module.exports = new GraphQLSchema({
    query: queryObj
});

然后在左側(cè)輸入 :

 hello(name:"zhaoxiang"),
WechatIMG214.png

然后在試試多參數(shù)的:

{
  hello(name:"charming"),
  person(name:"charming"){
    name,
    sex,
    age
  }
}
WechatIMG215.png

如果只傳sex和age字段的話:

WX20191112-171930.png

針對最近出現(xiàn)的項目上的問題泻帮;想將Graphql引入
哎 目前今天就掌握了這些 精置,后續(xù)如果在項目中應用的話,我在記錄吧 ??

踩坑總結(jié):

1锣杂、后端接口method為get,前端的query請求提示請求方法錯誤脂倦?
這是因為前端發(fā)送的graphql請求無論是query還是mutation,都是post請求。
2元莫、graphql請求瀏覽器的network顯示type為fetch
這也就是graphql與rest的不同之處赖阻,rest請求type為xhr,即XMLHttpRequest,但是graphql卻是fetch

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市踱蠢,隨后出現(xiàn)的幾起案子火欧,更是在濱河造成了極大的恐慌,老刑警劉巖茎截,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苇侵,死亡現(xiàn)場離奇詭異,居然都是意外死亡企锌,警方通過查閱死者的電腦和手機榆浓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撕攒,“玉大人陡鹃,你說我怎么就攤上這事〈蛉矗” “怎么了杉适?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柳击。 經(jīng)常有香客問我猿推,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任蹬叭,我火速辦了婚禮藕咏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秽五。我一直安慰自己孽查,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布坦喘。 她就那樣靜靜地躺著盲再,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓣铣。 梳的紋絲不亂的頭發(fā)上答朋,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音棠笑,去河邊找鬼梦碗。 笑死,一個胖子當著我的面吹牛蓖救,可吹牛的內(nèi)容都是我干的洪规。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼循捺,長吁一口氣:“原來是場噩夢啊……” “哼斩例!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巨柒,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤樱拴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洋满,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡珍坊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年牺勾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阵漏。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡驻民,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出履怯,到底是詐尸還是另有隱情回还,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布叹洲,位于F島的核電站柠硕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蝗柔,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一闻葵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧癣丧,春花似錦槽畔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嬉橙,卻和暖如春坏快,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憎夷。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工莽鸿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拾给。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓祥得,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蒋得。 傳聞我的和親對象是個殘疾皇子级及,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容