GraphQL學習筆記

2021-10-13 07:41:49 字數 4418 閱讀 9025

三、使用express和graphql 搭建helloworld

四、引數型別與引數傳遞

graphql clients

六、使用mutations修改資料

七、認證與中介軟體

八、高階constructing types(提高可維護性,**量上公升)

graphql 是乙個用於 api 的查詢語言,是乙個使用基於型別系統來執行查詢的服務端執行時(型別系統由你的資料定義)。graphql 並沒有和任何特定資料庫或者儲存引擎繫結,而是依靠你現有的**和資料支撐。

乙個 graphql 服務是通過定義型別和型別上的字段來建立的,然後給每個型別上的每個字段提供解析函式。

1.restful乙個介面只能返回乙個資源,graphql一次可以獲得多個資源

2.restful用不同的url來區分資源,graphql用型別區分資源

1.請求需要的資料,不多不少。(restful會返回所有的資料)

2.獲取多個資源,只用乙個請求

3.描述所有可能型別的系統,便於維護。

1.先建立乙個資料夾graphqltext,在資料夾裡建立乙個helloword.js檔案,**如下
const express =

// 定義schema,查詢和型別

const schema =

buildschema(`

type account

type query `)

// 定義查詢對應的處理器

);

2.cmd進入graphqltext的目錄,輸入npm init -y 目的是為了生成packjson檔案

3.npm install express graphql express-graphql -s 目的為了安裝三個元件

4.安裝完畢訪問url localhost:3000/graphql

1.1基本型別:string,int,float,boolean和id,可以在shema宣告的時候直接使用

1.2型別 代表陣列,例如: [int]代表整型陣列

2.1  和js傳遞引數一樣,小括號定義形參,但是注意:引數需要定義型別

2.2 !(嘆號)代表引數不能為空

type query

2.3核心**

const schema =

buildschema(`

type query `)

const root =

)return obj[classno];}

}

3.1graphql允許使用者自定義引數型別,通常用來描述獲取的資源的屬性

3.2核心**

// 定義schema,查詢和型別

const schema =

buildschema(`

type account

type query `)

// 定義查詢對應的處理器

const root =

)return obj[classno];}

,account()

)=>

return

3000;}

return

}}

1.1在basetype.js中新增公開資料夾,供使用者訪問靜態資源

1.2新建public資料夾,裡面建立index.html

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

"x-ua-compatible" content=

"ie=edge"

>

document<

/title>

<

/head>

"getdata()"

>獲取資料<

/button>

<

/body>

function

getdata()}`

const variables =

fetch

('/graphql',,

body:

json

.stringify()

}).then

(res => res.json)

.then

(json =>)}

<

/script>

<

/html>

mutation.js**
const express =

// 定義schema,查詢和型別, mutation

const schema =

buildschema(`

input accountinput

type account

type mutation

type query `)

const fakedb =

;// 定義查詢對應的處理器

const root =

return arr;},

createaccount()

,updateaccount()

, fakedb[id]

, input)

; fakedb[id]

= updatedaccount;

// 返回儲存結果

;

1.原始**

// 定義schema,查詢和型別

const schema =

buildschema(`

type account

type query

`)

2.高階**

var accounttype =

newgraphql.graphqlobjecttype(,

age:

, ***:

, department:}}

);

1.原始**

// 定義schema,查詢和型別

const schema =

buildschema(`

type account

type query

`)

2.高階**

var querytype =

newgraphql.graphqlobjecttype(}

, resolve:

function

(_,)}}

}});

var schema = new graphql.graphqlschema();

graphql的學習(一)

介紹 graphql是facebook開發的一 種資料查詢語言,並於2015年 公開發布。它是rest api的替代品 graphql既是 種用於api的查詢語言也是一 個滿足你資料查 詢的執行時。graphql 對你的api中的資料提供了一套易於理 解的完整描述,使得客戶端能夠準確地獲得它需要的資...

Graphql學習 二 查詢和變更

這一篇介紹一下graphql實際使用時的語法和一些要素 字段 fields 請求物件上的特定字段,返回結果的資料字段 可以是基本型別 string,int 也可以是自定義物件型別 可以看到,請求的時候可以對欄位進行層級選擇,使客戶端可以一次性取的級聯關係的相關資料。別名 aliases 簡單說來就是...

GraphQL 標量型別

標量 scalartypedefinition 是 graphql 中不可分割的原子資料型別,在服務中充當葉子節點。對於客戶端而言,合法的查詢集 select set 必須到達葉子節點,也就是到達標量型別節點。graphql 規範提供了五種標量 int 32 位有符號整型,超出精度範圍後,引擎會丟擲...