為什麼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
- 為什麼Kotlin比任何愚蠢的語言更好Kotlin
- 為什麼 APISIX Ingress 是比 Traefik 更好的選擇?API
- C++中為什麼使用指標比使用物件本身更好?C++指標物件
- 為什麼 GraphQL 是 API 的未來API
- 為什麼iPhone拍照更好看iPhone
- 【譯】GraphQL vs. RESTREST
- GraphQL API vs REST APIAPIREST
- 為什麼 APISIX Ingress 是比 Ingress NGINX 更好的選擇?APINginx
- 為什麼你可能不需要GraphQL?
- REST與GraphQL的爭論REST
- 為什麼說無程式碼開發比低程式碼開發更好?
- 為什麼Java在高速交易系統上比C ++更好? -efinancialcareersJavaNaN
- GraphQL Vs. REST? API 開發方法的誠實比較 | transpositRESTAPI
- 為什麼軟體測試外包更好?
- 什麼是restREST
- 什麼是REST?REST
- Vite為何比Webpack更好?ViteWeb
- 安息吧 REST API,GraphQL 長存RESTAPI
- 安息吧,REST API,GraphQL 長存RESTAPI
- 為什麼要使用MVC+REST+CQRS架構MVCREST架構
- REST SOE是什麼?REST
- 到底什麼樣的 REST 才是最佳 REST?REST
- GraphQL入門:GraphQL與REST區別的不同舉例 - SithiraREST
- [譯] REST API 已死,GraphQL 長存RESTAPI
- 為什麼GraphQL效能監控很難 - Marc-AndréGirouxUX
- 為什麼Git比SVN好Git
- 單例模式中為什麼用列舉更好單例模式
- 為什麼通才能成為更好的產品經理 - productcoalition
- 27 個為什麼,幫助你更好的理解PythonPython
- Webform和MVC,為什麼MVC更好一些?WebORMMVC
- 為什麼GPL是更好的開源許可證?
- 為什麼 call 比 apply 快?APP
- 精讀《REST, GraphQL, Webhooks, & gRPC 如何選型》RESTWebHookRPC
- [譯] 將現有的 API 從 REST 遷移到 GraphQLAPIREST
- Rust vs. Go:為什麼強強聯合會更好RustGo
- 為什麼 HTTPS 比 HTTP 更安全?HTTP