category{
name
product(product-id){
name
productInfo{
size
price
seller-id
}
seller(seller-id){
name
location-id
delivery(location-id){
name
}
}
}
}
}

雖然 GraphQL 方法的單個查詢靈活性對開發人員來說很棒,但在使用 GraphQL 監控數據查詢時,這帶來了挑戰。如果在使用 REST API 進行交易期間出現部分故障,或者端點無法返回數據,則 HTTP 請求將返回失敗狀態響應。當調用失敗時,API 提供者和 API 使用者都會收到 HTTP 500 或 400 錯誤,而當端點調用成功時,則會收到成功的 HTTP 200。我們的購物示例中的 REST API 故障如下所示:

HTTP/1.1 400 Unprocessable Entity
{
"error":
{
"code": "400",
"message": "Product ID does not exist"
}
}

使用 GraphQL,即使 API 調用未返回任何查詢數據,部分故障也會成功解決并返回 HTTP 200。成功的 HTTP 響應是查詢到達服務器的結果。如果查詢調用不存在的數據或消費者無權訪問的數據,則 HTTP 響應代碼不會為您提供此信息。這會使處理錯誤更加困難,因為需要付出更多努力來診斷錯誤。API 消費者可以檢查響應對象中的錯誤對象,該對象將顯示哪個端點遇到錯誤以及導致錯誤的原因。以下是我們的 GraphQL 購物應用查詢示例中的部分故障:

{
"errors": [
{ "path": [ "product" ],
"locations": [ { "line": 3, "column": 12 } ],
"extensions": {
"message": "Object not found",
"type": 2
}
}
]
}

API 使用者能夠通過在客戶端檢查 GraphQL 錯誤對象(如此處所示)來診斷錯誤。遺憾的是,如果您沒有檢查每個調用,則在服務器端可能無法捕獲這些錯誤。API 提供商要解決此問題,他們需要監控 API 返回的 GraphQL 負載,以便他們可以像使用其 API 的開發人員一樣檢查錯誤對象。監控 API 負載還有一個額外的好處,就是讓您了解開發人員如何使用您的 API、哪些查詢最常見、哪些查詢的延遲最低以及 API 使用者是否成功完成了查詢。

通過觀察學習

監控 GraphQL 負載的另一個好處是,您可以記錄指標,以便根據開發人員訪問 API 的方式做出有關 API 的長期決策。日志可以告訴您哪些 GraphQL 查詢成功了、誰是您最忠實的用戶、首次用戶進行哪些查詢以及哪些查詢經常捆綁在一起等等。這可以為您組織的客戶成功策略提供信息,從而使您能夠編寫更有效的文檔、找到在 API 調用方面遇到挑戰的用戶,并為使用 API 的開發人員提供更主動的支持。通過詳細的日志,您可以深入了解 API。過濾查詢是一種從 GraphQL 日志中匯總信息的強大技術。

將 GraphQL 查詢匯總到您的 API,然后按字段名稱和參數值等類別進行過濾,這將為您提供有關對 GraphQL API 進行的大部分查詢的可操作信息。這會告訴您 API 的哪些部分為客戶創造了最大的價值,因此您知道在編寫文檔時應該關注什么、向開發人員介紹哪些查詢以及哪些附加功能可能會為您的用戶創造價值。如果您的組織同時擁有 GraphQL 和 REST API,則過濾查詢將使您能夠直接比較開發人員使用不同 API 的方式。

我們介紹了貴組織應如何實現 GraphQL API 可觀測性,以及它對于專注于促進客戶成功的組織的重要性。雖然 REST API 可觀測性的實現更加直觀,并且現有的 REST API 分析工具也更多,但 GraphQL 可觀測性與 REST API 可觀測性相比具有一些獨特的優勢。

GraphQL API 可觀察性的優勢

GraphQL 查詢會準確指出需要哪些信息。REST API 消費者經常會獲取不足或過度的數據,因為他們無法選擇所需的特定數據。GraphQL 查詢僅調用消費者需要的數據,這會告訴您哪些數據正在為消費者創造價值。使用 REST API 分析可能很難確定多個連續的 API 端點調用是來自消費者的單個事務的一部分,還是它們是不相關的事件。GraphQL 分析將單個事務所需的所有調用捆綁到一個查詢中,因此您可以更清楚地了解消費者如何使用您的 API。

GraphQL API 分析可以讓您在產品開發中比 REST API 分析更具優勢,并且可以讓您的組織更輕松地專注于客戶成功。如果您的組織了解首次使用的用戶在遇到挑戰時如何嘗試查詢您的 API,那么您的客戶支持就可以在解決客戶遇到的問題方面發揮更積極的作用,從而提供更詳細和更有建設性的支持。如果客戶由于調用不再存在的 REST 端點而無法查詢您的 API,您的組織可能不會觀察到此故障,并且您的客戶支持將無法聯系到該客戶。與 GraphQL API 調用相比,查詢只會轉到單個端點。如果客戶嘗試查詢不再存在的數據,您的監控將記錄此故障,并且您的客戶支持可以直接聯系用戶,以幫助您的客戶成功進行 API 調用。

多年來,GraphQL 已變得非常流行,越來越多的團隊選擇使用 GraphQL API。作為 API 提供商,觀察您的 GraphQL API 可能具有挑戰性。絕大多數 API 分析工具都是為支持 REST API 而構建的,而 GraphQL 通常是事后才考慮的。莫伊西夫與眾不同,它旨在觀察 GraphQL 和 REST API,以便您的組織能夠促進客戶成功并為客戶創造價值。Moesif 提供了 GraphQL 可觀察性的所有優勢,并內置于產品中。實施 GraphQL API 時,您無需放棄強大的分析工具!

原文地址:https://www.moesif.com/blog/graphql/api-development/GraphQL-Versus-RESTAPI-Which-is-Better-for-API-Observability/

上一篇:

數字貨幣對沖策略源代碼介紹及FMZ平臺最新API

下一篇:

SOAP vs REST:哪種API設計適合您的業務?
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費