graphql的學習(一)

2021-10-06 13:26:19 字數 2674 閱讀 4932

介紹

● graphql是facebook開發的一 -種資料查詢語言,並於2023年

公開發布。它是rest api的替代品

● graphql既是- -種用於api的查詢語言也是一-個滿足你資料查

詢的執行時。graphql 對你的api中的資料提供了一套易於理

解的完整描述,使得客戶端能夠準確地獲得它需要的資料,而且

沒有任何冗餘,也讓api更容易地隨著時間推移而演進。

● 官網:

● 中文網:

● 特點:

1.請求需要的資料,不多不少

例如: account中有name, lage, ***, department等。 可以只取得需要的字段。

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

3.描述所有可能型別的系統。便於維護,根據需求平滑演進,添

加或者隱藏字段。

●restful: representational state transfer表屬性狀態轉移。本

質上就是用定義uri,通過api介面來取得資源。通用系統架構,

不受語言限制。

resful乙個介面只能返回乙個資源,graphql一次可以返回多個資源。

resful用不同的url來區分資源,graphql用型別區分

基本型別:string,boolean,float,int ,id,可以在schema中直接使用。

陣列[型別]:[int]代表整型陣列。

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

義型別。

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

type query

● graphql允許使用者自定義 引數型別,通常用來描述要獲取的資

源的屬性。

type account 

type query

服務端介面
var express =

;// 定義模型 查詢 type不能丟

const schema =

buildschema(`

type query

type account

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

const root =

)=>

return obj[classno]},

account:()

=>

)=>

else

}// 最後整體返回

// 向外公開資料夾供使用者訪問靜態資源index

use(express.

static

('public'

))

訪問埠資訊

在客戶端訪問graphql介面

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

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

>

document<

/title>

<

/head>

"getdata()"

>獲取資料<

/button>

function

getdata()}`

// 定義變數,該變數自動繫結$username

var variables =

fetch

('/graphql',,

// 轉換為字串

body:

json

.stringify()

}).then

(res => res.json)

.then

(data =>)}

<

/script>

<

/body>

<

/html>

network中可以看到

注意:

1.定義的int型如果在定義處理器中加「13」會預設轉換為int,但是如果有其他字元,或報錯,請求後會有提示,且對應欄位為null

2.定義模型的type 不能丟且後面必須是大寫字母開頭的單詞

客戶端訪問的引數字段一定要對應一致,

請求資料貌似使用apollo的方式,還沒研究,下來看看

GraphQL學習筆記

三 使用express和graphql 搭建helloworld 四 引數型別與引數傳遞 graphql clients 六 使用mutations修改資料 七 認證與中介軟體 八 高階constructing types 提高可維護性,量上公升 graphql 是乙個用於 api 的查詢語言,是乙...

Graphql學習 二 查詢和變更

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

GraphQL的踩坑之路

為了更好的支援前端能夠自由組合 展示收到的資料,筆者使用graphql go 框架開發了負責的模組,但測試過程中發現,使用graphql會有n 1 query的問題。經過調研發現兩種解決方案 在使用graphql go的同時使用facebook開源的dataloader工具,詳細例子見dataloa...