這一篇介紹一下graphql實際使用時的語法和一些要素
字段(fields)
請求物件上的特定字段,返回結果的資料字段
可以是基本型別(string,int),也可以是自定義物件型別}}
,,]}
}可以看到,請求的時候可以對欄位進行層級選擇,使客戶端可以一次性取的級聯關係的相關資料。
別名(aliases)
簡單說來就是對字段及返回用任意的名字進行變更
jedihero: hero(episode: jedi) },
"jedihero": }}
原本請求2個hero欄位會有衝突,用別名就解決了這個問題
操作名稱(operation name)
上面的查詢使用了簡寫,其實都省略了 query 關鍵字及具體的查詢名稱。推薦在使用中,定義查詢名稱減少歧義,而且當傳遞動態引數及變數時,需要在名稱後宣告
query queryusers }}
上例中宣告了操作型別為query,並且操作名稱是queryusers
graphql中操作型別有:query(查詢)、mutation(增刪改)、subscription(訂閱)。
變數(variables)
在引數演示了將引數值加在字段上,但很多情況下請求引數都是動態的,如何適配這一場景呢?使用前需要:
使用$vname 替代查詢中的靜態值
在操作名稱後宣告$vname為查詢接受的變數之一
使用json格式傳輸變數
query queryusers($vname:string = "zzz") }}
variable:
這樣通過不同的變數就可以進行動態的查詢了。注意也可以在操作名稱後的變數後定義預設值。如果想傳遞乙個複雜物件,需要知道schema的定義,並以對應的json形式傳入,這邊不做贅述。
指令(directives)
和變數可以動態操作我們的查詢一樣,指令可以幫助我們動態的改變我們查詢的結構。常見於列表檢視及詳情檢視中。
query queryusers($vname:string = "zzz",$needshow:boolean) }}
variable:
這樣整體的返回結果中就不會包含dogs欄位,可以使用的指令有:
@include(if: boolean) 僅在引數為 true 時,包含此欄位。
@skip(if: boolean) 如果引數為 true,跳過此欄位。
變更(mutation)
之前大部分涉及的都是資料查詢,graphql中約定任何的寫入操作通過mutation來進行操作。和查詢一樣,如果乙個變更操作後需要返回資料,也可以請求欄位來作資料返回
mutation createuser($vname: string!, $dogs: doginput!) }}
variable:,]
}內聯片段(inline fragments)
參見官網,用的比較少,如果你查詢的字段返回的是介面或者聯合型別,那麼你可能需要使用內聯片段來取出下層具體型別的資料
query heroforepisode($ep: episode!)
... on human }}
variables:
如果要請求具體型別上的字段,你需要使用乙個型別條件內聯片段。因為第乙個片段標註為 … on droid,primaryfunction 僅在 hero 返回的 character 為 droid 型別時才會執行。同理適用於 human 型別的 height 字段。
片段(fragement)
與內連片段類似,通常在查詢中如果有大量重複字段的話,會進行使用
你可以看到上面的查詢如何漂亮地重複了字段。片段的概念經常用於將複雜的應用資料需求分割成小塊,特別是你要將大量不同片段的 ui 元件組合成乙個初始資料獲取的時候。
元欄位(meta fields)
顧名思義,有一些內建引數,在我們不知道graphql服務會返回的資料結構,資料型別等、
總結介紹了基本的查詢語法及可以使用到的一些常用功能,應該不難理解,而且在資料層面也都和一般的rest api差不多,學習成本較低。下一次說一下我覺得最為重要的schema。。
LTE學習筆記 系統資訊的排程和變更
通過廣播帶給ue的訊息。1 排程 1 si window si視窗,每個si的傳送視窗,可由使用者配置,也可根據系統訊息的配置情況動態配置。2 si週期 t 3 si的起始幀和起始子幀 4 不能用於傳輸si的子幀 5 根據si的起始幀 起始子幀以及si視窗長度,就可知道si視窗的具體位置。si具體在...
二分查詢 折半查詢 學習
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...
Dynamodb 學習筆記二(查詢)
dynamodb提供的三種查詢操作 getitem 明確主鍵的查詢 query 帶條件的查詢 scan 不帶條件的查詢 people id people name year of birth 100tom1999 101jim 1999 102lucy 1999 103dacy 1999 103da...