介紹
● graphql是facebook開發的一 -種資料查詢語言,並於2023年
公開發布。它是rest api的替代品
● graphql既是- -種用於api的查詢語言也是一-個滿足你資料查
詢的執行時。graphql 對你的api中的資料提供了一套易於理
解的完整描述,使得客戶端能夠準確地獲得它需要的資料,而且
沒有任何冗餘,也讓api更容易地隨著時間推移而演進。
● 官網:
● 中文網:
● 特點:
1.請求需要的資料,不多不少●restful: representational state transfer表屬性狀態轉移。本例如: account中有name, lage, ***, department等。 可以只取得需要的字段。
2.獲取多個資源,只用-個請求
3.描述所有可能型別的系統。便於維護,根據需求平滑演進,添
加或者隱藏字段。
質上就是用定義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請求資料貌似使用apollo的方式,還沒研究,下來看看2.定義模型的type 不能丟且後面必須是大寫字母開頭的單詞
客戶端訪問的引數字段一定要對應一致,
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...