REST與GraphQL的爭論
1. 我不介意REST與GraphQL的爭論,但是如果你看到像“你有過度獲取/不足獲取(over/under-fetching)的REST”這樣的論點,這對REST來說不是問題,那就是糟糕的API設計。辯論需要以真正的問題為中心 就像有人抱怨SQL有一個“over/under-fetching”的問題,因為開發人員只寫了一個SQL語句:“SELECT * FROM <OneTable>”
2. 我認為關鍵是可以*設計一個支援查詢粒度的REST API(例如,欄位選擇器,擴充套件相關模型等),但是必須自己設計和構建它。
3. 其實我最喜歡的是使用兩者。當與CQRS一起使用時,我有命令API的REST和查詢API的GraphQL。它們是分開的,因為它們完成不同的工作並具有不同的工作負載和複製因子。
4. 我自己也是一個REST粉絲,但事實是,graphQL可變性非常適合於命令。
5. 我喜歡並開發REST API,但我不同意over fetching過度獲取資訊=破碎有缺陷。這取決於業務案例,也就是說,自己是唯一的消費者?還是第三方也會使用此API端點?他們是否需要我新增一些我可能不需要的其他資訊?
6. 如果over fetching過度獲取的資料大小不顯著,我沒有看到問題。如果API變得龐大且管理起來很麻煩,我確實看到它失去控制。其他資料只是放入模型與最佳化等等......
7. 支援GraphQL的人認為REST是糟糕的API設計的原因。
8. 辯論應該圍繞正規化本身的差異。REST是一種以資源為中心(又稱為關係型DB),側重於狀態,而不是操作。GraphQL最初解決了一個特定的查詢問題,並且新增了變動作為一種思考(RPC風格)。
9. HTML有連結和表單,這些是操作。REST中沒有任何東西會迫使您以關聯式資料庫的方式進行思考
10. RESTful規定使用類似於CRUD的HTTP動詞,如GET,POST,PUT和DELETE。
11. REST是針對資源,但沒有規定任何資源如何設計。將資源與DB記錄等同起來是不正確的假設。在實踐中,我幾乎*從不*使用PUT / DELETE因為我不能輕易保證冪等性或符合HTTP約束。
相關文章
- GraphQL入門:GraphQL與REST區別的不同舉例 - SithiraREST
- 【譯】GraphQL vs. RESTREST
- GraphQL API vs REST APIAPIREST
- 為什麼REST比GraphQL更好? - TomaszJaskuλaREST
- 精讀《REST, GraphQL, Webhooks, & gRPC 如何選型》RESTWebHookRPC
- GraphQL分享理論篇
- REST將會過時,而GraphQL則會長存REST
- 一種不錯的 BFF Microservice GraphQL/REST API 層的開發方式ROSRESTAPI
- GraphQL Vs. REST? API 開發方法的誠實比較 | transpositRESTAPI
- 不要進行無謂的OOP與FP爭論 - Mathias VerraesOOP
- Epic VS 蘋果 Part 2:爭論焦點與Xbox的入場蘋果
- HTTPS與Django REST FramworkHTTPDjangoREST
- Django REST framework的請求與響應DjangoRESTFramework
- 大資料爭論:批處理與流處理的C位之戰大資料
- 是否要做Code Review?與BAT資深架構師爭論之後的思考ViewBAT架構
- 關於Java的取時間方法的爭論Java
- GraphQL-前端開發的利劍與橋樑前端
- 微服務中GraphQL與RESTful比較微服務REST
- rails graphql的使用AI
- 隱於網路爭論之下,Scott眼中的Alec
- GraphQL.js 與服務端互動的新方式JS服務端
- GraphQL 碰撞 Apache APISIX,提升 API 領域的安全與效能ApacheAPI
- 乙女遊戲:爭論背後遊戲
- 到底什麼樣的 REST 才是最佳 REST?REST
- Graphql學習(一)-GraphQL介紹
- GraphQL 快速入門【5】GraphQL 示例
- 《GraphQL 名詞 101:解析 GraphQL 的查詢語法》【譯】
- 主流RPC框架詳解,以及與SOA、REST的區別RPC框架REST
- 《戰爭論》第五篇《軍隊》的主要內容
- 儲存界的“紅白玫瑰”之爭,有結論了!
- GraphQL 漸進學習 05-graphql-resolvers-union-聯合的使用
- 戰爭與回憶
- 前端應該知道的GraphQL前端
- Spring GraphQL與Netflix領域圖服務框架整合Spring框架
- 歷史對話整理:古代戰爭討論
- 素食與肉食的價值觀之爭
- GraphQL學習:Github GraphQL API v4初探GithubAPI
- GraphQL案例演示