當我們構建 GraphQL API 時,保持對過去和將來的考量都至關重要。這就要求我們的 API 既要兼容以前的實現,也能適應未來的變革。
一、維持與過去的連續性
保證API與歷史版本的兼容性是API設計中的一個重要方面。開發者必須牢記,在升級或擴展功能時,不能忽視那些仍在使用舊版本應用的用户。儘管這可能會增加開發的複雜性和成本,但能夠避免用户升級時出現問題,這樣能大大減少開發週期中返工的時間和代價。
如果API不能與舊版本兼容,可能會導致用户在使用中遇到查詢錯誤,從而影響他們的體驗並可能導致用户流失。因此,保持舊有功能的正常運行是至關重要的。
二、面向將來的可擴展性
可擴展性是評估API好壞的關鍵因素之一。GraphQL查詢 應採用類似ORM的對象模型配置方式,以便在未來添加或修改查詢而不影響現有結構。
如果不使用結構化的對象類型,參數列表可能會隨着時間的推移而變得不必要地長,可能會導致代碼的可維護性下降。
三、GraphQL API 設計時應注意的細節
1、清晰的命名規範
在命名方面,應用清晰的命名規範,例如:
- 添加用户:
createUser - 刪除用户:
deleteUser - 更新用户信息:
updateUser
2、參數設計
參數結構需要保持穩定,以支持向後兼容性,同時也要靈活以便能夠加入新的參數,以滿足未來的需求。
3、響應格式
確保回傳相關的響應信息,可以減少前端所需的請求次數,提高應用的性能效率。
4、單一入口
對於GraphQL API的設計應遵循單入口原則,不像REST那樣為每一個請求都設置獨立的URL。
5、壓縮響應數據
通過添加 HTTP頭:
Accept-Encoding: gzip
我們能夠壓縮返回的數據,從而減少傳輸數據量,加快響應速度。
6、處理可空字段
允許某些響應字段為可空,以避免因單一字段查詢失敗而影響整體數據的完整性和使用。
7、分頁功能
考慮到GraphQL不支持對深層次的數據進行全量查詢,分頁變得尤為重要。
四、GraphQL 接口測試
創建GraphQL API後,測試是確認其是否符合預期的重要步驟。
這裏以 Apifox 為例來演示如何進行接口調試。
1、構建GraphQL請求
需要首先創建一個GraphQL請求。
2、斷言配置
使用Apifox提供的斷言功能來驗證響應數據,判斷其是否符合預期:
- 填入斷言名稱
- 設置 JSON PATH表達式
- 配置斷言條件
3、執行並驗證測試結果
發送請求,並驗證所見即所得是否與預期的數據一致。
通過這樣的測試,我們能夠驗證GraphQL接口是否正確地返回了預期的數據。
知識擴展:
- Dubbo 和 gRPC:國內哪個更流行?
- 分佈式系統框架對比:gRPC vs Dubbo