為什麼REST比GraphQL更好? - TomaszJaskuλa
GraphQL並不是要取代REST,它是固執己見的,並且在設計時考慮了特定的約束。它是一種強大的查詢語言,可以讓客戶端掌控一切。但取決於具體情況,這可能是好的或壞的做法!
RESTful API可能難以正確設計。我的意思是那些利用HATEOAS的人。但是一旦你做對了,它就會非常強大。特別是在機器到機器的互動中。另一方面,根據我的經驗構建RESTful客戶端非常困難。
為什麼RESTful客戶端難以構建?至少我可以根據我的經驗中這麼認為。因為沒有單一方法可以解釋例如諸如如何設計嵌入式連結和集合。實現方法有不同的格式,如HAL,Json-LD,Collections + Json,Siren ...每個都有優缺點。
有時選擇一個定義良好的協議作為ATOM可能是最好的解決方案。否則,選擇正確的格式可能很困難,因為在特定上下文中使用它之前需要知道的重要差異。
另一個問題是如果你使用React,Angular和其他東西構建Ux客戶端。一般來說,你可能忘記了解析連結等問題。框架/庫存在有自己的方式,很難繞過它自己的客戶端路由方式。
另一方面,GraphQL使用Apollo等方式更容易進行Ux客戶端開發。GraphQL支持者宣傳它比REST更好,因為沒有資料的查詢不足/查詢過多等問題,但它也需要正確設計知識和經驗。
GraphQL api:必須受到保護,不要被過於複雜的查詢(最大深度,白名單等)攻擊:
- - 在客戶端正確捕獲
- - 必須優化解析器(捕獲和批處理)
- - 優化和正確設計資料載入器。
- - 版本控制
GraphQL在二進位制資料方面也存在一些問題。即使上傳小影象也需要Base64編碼(較慢),或者必須與另一個API端點混合以進行二進位制資料操作。
有些人還使用GraphQL作為機器與機器之間的互動或將其用於微服務架構,但對我來說這似乎是一個壞主意。當然我也有興趣聽聽現實世界的經歷。
在我目前的上下文中,我們發現使用GraphQL對於Ux客戶端開發更容易。
我的方法是:在UX中使用Graphql - > b/e(API),而REST用於m2m(機器到機器 SPI),最終grpc可能是m2m的一個很好的替代方案。
相關文章
- SQL是比GraphQL更好的API語言?SQLAPI
- 為什麼 APISIX Ingress 是比 Traefik 更好的選擇?API
- 為什麼 APISIX Ingress 是比 Ingress NGINX 更好的選擇?APINginx
- 【譯】GraphQL vs. RESTREST
- GraphQL API vs REST APIAPIREST
- 為什麼iPhone拍照更好看iPhone
- 為什麼 GraphQL 是 API 的未來API
- 為什麼我們不使用GraphQL? - Wundergraph
- 為什麼Java在高速交易系統上比C ++更好? -efinancialcareersJavaNaN
- REST與GraphQL的爭論REST
- GraphQL Vs. REST? API 開發方法的誠實比較 | transpositRESTAPI
- 為什麼你可能不需要GraphQL?
- 為什麼說無程式碼開發比低程式碼開發更好?
- 什麼是restREST
- Vite為何比Webpack更好?ViteWeb
- 為什麼軟體測試外包更好?
- GraphQL入門:GraphQL與REST區別的不同舉例 - SithiraREST
- 到底什麼樣的 REST 才是最佳 REST?REST
- 為何IntelliJ IDEA比Eclipse更好IntelliJIdeaEclipse
- 精讀《REST, GraphQL, Webhooks, & gRPC 如何選型》RESTWebHookRPC
- 為什麼GraphQL效能監控很難 - Marc-AndréGirouxUX
- GraphQL 到底有什麼魔力?
- 27 個為什麼,幫助你更好的理解PythonPython
- 為什麼通才能成為更好的產品經理 - productcoalition
- 鐵電RAM為何比序列SRAM更好
- 「Spring認證」什麼是Spring GraphQL?Spring
- Spring認證_什麼是Spring GraphQLSpring
- Spring認證_什麼是Spring GraphQL?Spring
- 為什麼女性比男性活得更久?
- 為什麼 HTTPS 比 HTTP 更安全?HTTP
- REST將會過時,而GraphQL則會長存REST
- 使用SpringBoot構建REST服務-什麼是REST服務Spring BootREST
- Rust vs. Go:為什麼強強聯合會更好RustGo
- 為什麼使用縮排來分組語句?15個為什麼,幫助你更好的理解Python!Python
- Promise為什麼比setTimeout先執行?Promise
- 為什麼python比c更簡單Python
- 為什麼nginx效能比apache效能好NginxApache
- 為什麼不應該在 REST API 中使用布林值? - geekcultureRESTAPI