昨天,我們深入探討了 GraphQL Document。
今天,我們將繼續探索另一核心概念:GraphQL Operation。
想像一下,在奇幻世界中,冒險者高聲吟唱神秘咒語,強大的魔法隨即展現。
如果「Document」是 GraphQL 世界中的魔法語法規則,那「Operation」就等同於那句具體而強大的魔法咒語。
在 GraphQL 裡,執行查詢 (query)、變更 (mutation) 或訂閱 (subscription),就像是施展魔法,根據「Document」的指引,來召喚或修改資料,換句話說,「Operation」是施法的手段,而「Document」就是我們的魔法指南。
在 GraphQL 中,一個 GraphQL Document 可以包含一個或多個 Operation,例如:
// 查詢一個用戶的資訊
query {
user(id: 1) {
id
name
email
}
}
// 創建一個新的待辦事項
mutation {
createTodo(input: { title: "Buy groceries" }) {
id
title
completed
}
}
// 查詢所有待辦事項的標題
query {
todos {
id
title
}
}
這樣的結構允許我們在一個請求文檔中組合不同類型的操作,從而減少了請求的數量,提高了效率。
當伺服器接收到這個文檔時,它會分別解析和執行每個操作,然後返回相應的結果。這種方式可以更好地滿足客戶端的需求,並減少不必要的請求。
但隨之而來的,則是文檔解析的效能問題,伺服器在解析執行過於複雜、設計不良的文檔時,往往會導致效能低落的問題。
總結來說,GraphQL 文檔允許多個操作的特性為我們提供了靈活性和效率,但同時也需要謹慎設計以確保順利執行。
GraphQL Operation 是 GraphQL 中用於執行查詢、變更或訂閱的具體操作手段。
三大核心操作指的是查詢 (query)、變更 (mutation)、訂閱 (subscription)
Query is a read-only fetch.
查詢在 GraphQL 中是一種請求方式,它是唯讀的,只負責取得資料,而不會進行任何修改或刪除。例如:
// 匿名查詢
query {
todos {
title
}
}
// 具名查詢
query getTodos {
todos {
title
}
}
在後續的章節,我們將深入探討在 Vue 中有效使用查詢的技巧和實例。
Mutation is a write followed by fetch.
變更在 GraphQL 中是一種寫入後取得資料的操作,用於改變資料。與查詢不同,它們不僅僅是用來讀取資料,而是用來修改、新增或刪除資料。例如:
// 新增一個待辦事項,如果成功,返回新增的待辦事項的 id 和創建日期。
mutation {
insertTodos(objects: [{ title: "Learn GraphQL" }]) {
returning {
id
created_at
}
}
}
我們可以由上述的例子觀察到:
title
,它是新待辦事項的標題。在後續的章節,我們將深入研究如何使用 Mutation 來改變資料,並將其與查詢結合,以構建功能豐富的應用程式。
Subscription is a long‐lived request that fetches data in response to source events.
在 GraphQL 中,不僅可以查詢和修改資料,還可以通過訂閱(Subscription)來感知資料的即時變化。
訂閱的概念就像你訂閱了一個直播活動的通知。每當有新的直播開始時,你會立即得到通知。例如:
subscription {
newLives {
id
title
user {
name
}
}
}
Subscription 與 WebSocket
訂閱是一個長期的連結,它允許客戶端保持與伺服器的連接,以便即時接收更新。這種長期連接是通過 WebSocket 等協議實現的,它們與傳統的HTTP請求不同,後者是短期的並且需要不斷重新建立。
這個對照表可以協助熟悉 RESTful 的開發者,將觀念轉換成 GraphQL 操作。
Requirement | REST | GraphQL |
---|---|---|
Fetching data objects | GET | query |
Inserting data | POST | mutation |
Updating / deleting data | PUT / PATCH / DELETE | mutation |
Watching / subscribing to data | - | subscription |
在本篇文章中,我們深入瞭解了 GraphQL 操作的三大核心類型:查詢、變更和訂閱。
這些操作是GraphQL中用於取得、修改和監聽資料的主要方法,這些知識將為我們在後續章節中更深入地探討GraphQL提供堅實的基礎。
明天,我們將進入本系列文章的下一個階段 - 「動手做、做中學」
我們將繼續開發之前的部落格專案,首先,我們將從查詢操作開始!