GraphQL API 性能測試:查詢到底能有多快?
圖源:unsplash
自2015年開源以來,GraphQL因其靈活性和高效率而迅速普及。它可以通過允許客戶端在一個請求中準確指定他們所需的數(shù)據來處理復雜的嵌套查詢,從而消除了RESTful API固有的數(shù)據冗余和請求冗余的經典問題。
此外,由于它只是一種查詢語言,與協(xié)議無關,因此可以通過HTTP2、websockets或TCP使用。
有什么潛在的風險?
但是,GraphQL并不是萬金油,做出轉變時還有一些問題需要考慮。
· 出錯信息:即使查詢失敗,客戶端也始終會收到200狀態(tài),因為非200響應代碼表示問題發(fā)生在HTTP傳輸層而不是GraphQL層。
· 模式設計:如果開發(fā)人員在進行模式設計時粗心了(尤其是在定義resolver函數(shù)時),那么性能和效率可能會急劇下降——使用GraphQL API可能比RESTful API更糟糕。
· 性能測試:使用GraphQL API很難進行有意義的性能測試,因為它僅公開一個測試端點。在對包含多個嵌套查詢的請求進行故障排除時,開發(fā)人員如何才能知道瓶頸在哪里,或者是什么導致請求失敗?
這些都是在設計API時需要考慮的問題。不過也有好消息,即使存在些局限,性能優(yōu)化和測試也能輕松完成。
查詢有多快呢?
進入OpticQL,這是OSLabs Beta最近啟動的開源項目,旨在通過性能測試解決上述問題。OpticQL是一個桌面應用程序,它為GraphQL API提供了用戶友好的測試平臺,并結合了輕量級的NPM軟件包,該軟件包使開發(fā)人員能夠將應用程序無縫連接到OpticQL,導入其架構并捕獲數(shù)據庫請求的性能指標。
OpticQL的功能包括:
· 模式可視化,以圖形方式表示所有模式的字段和邊。所有類型名稱都以顏色編碼和動態(tài)視圖連接到其字段,還提供了模式可視化的全屏視圖。
· 輸入字段以編寫和提交查詢和修改。當查詢或修改發(fā)送到OpticQL時,架構的所有受影響部分將變?yōu)榫G色,以指示請求已“到達”它們。
· 包含返回的響應數(shù)據、細粒度的resolver跟蹤信息,以及請求觸發(fā)的所有錯誤的列表的視圖。
· 以毫秒為單位的請求執(zhí)行情況的圖形化概覽,可選擇查看最新請求的性能,并與對OpticQL作出的歷史請求的性能進行比較。
· 瀏覽受查詢影響的每個字段的擴展性能指標的更多選項。
對于希望測試和優(yōu)化GraphQL API性能的開發(fā)人員而言,OpticQL強大且易于使用,你可以在OpticsQL的網站下載它或了解更多信息。