精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GraphQL vs REST API 架構,誰更勝一籌?

新聞 前端
2015年, Facebook開源GraphQL 。 此后,它在前端Web中大受歡迎。 傳統的REST API有何不足?GraphQL優勢何在?在本文中, 我們將深入探討GraphQL的設計原則,比較 GraphQL 與 REST 的異同,并討論GraphQL 相對其他架構的優點。

 [[313368]]

2015年, Facebook開源GraphQL 。 此后,它在前端Web中大受歡迎。 傳統的REST API有何不足?GraphQL優勢何在?在本文中, 我們將深入探討GraphQL的設計原則,比較 GraphQL 與 REST 的異同,并討論GraphQL 相對其他架構的優點。

1 你的 API 應該用哪項技術?

自從 2015 年 Facebook 開源 GraphQL 規范以來,它就在前端 Web 開發中迅速流行起來。

  1. 為什么這種新技術會突然流行起來?

  2. 與傳統 REST API 相比,GraphQL 提供了哪些優勢?

我們將討論 GraphQL 的設計原則,比較 GraphQL 與 REST 中的相同請求,并 深入探討 GraphQL 相對其他架構的優點 。

為理解 GraphQL 作為 API 架構的好處,我們要討論 API 在客戶端 - 服務器結構中的作用。API(應用程序編程接口)是一個中間層,它允許服務器從客戶端接收結構化數據請求,并針對請求的數據發送結構化的響應。設計 API 架構的方法有很多種。

讓我們來研究一下促使 GraphQL 適合現代化 Web 應用程序的重要基本設計原則。

2 GraphQL 服務器的設計原則

GraphQL 規范概括了 5 個設計原則,這使其成為現代前端開發的良好解決方案。 我們看一下 GraphQL 的設計原則,并以 Facebook 新聞推送作為我們的用例。

[[313369]]

  1. 查詢為分層結構,使用將查詢與響應數據1對1匹配的分層和嵌套字段格式。查詢和響應的形狀類似于樹,可查詢每個項的其他嵌套字段。在 Facebook 的新聞推送中,這種結構允許一個查詢返回一個帖子列表、每個特定帖子的評論,以及每個評論的點贊。

  2. 該結構以產品為中心,關注前端希望如何接收數據,并構建交付所需的運行時。這使得 Facebook 的新聞推送可通過一次請求從后端獲取需要的所有數據,使服務器按照 GraphQL 的規范從不同的端點獲取數據。

  3. 它使用特定于應用程序的類型系統,該系統使開發人員能在執行前確保查詢使用了有效類型,并且語法正確。例如,新聞推送的 GraphQL 模式要求字段“user”必須包含一個字符串,而“likes”必須包含一個數字。如果查詢試圖添加不同類型的輸入,GraphQL 將在執行查詢前拋出一個錯誤。

  4. GraphQL 查詢是在客戶端指定的,因此,客戶端確切知道它將以何種格式接收數據。這意味著,如果前端請求的格式是包含用戶名、評論和點贊的 post 數據,那么來自 Facebook 新聞推送的請求會構建在一個對象中,而不是像其他架構那樣構建多個單獨的數據塊。

  5. 使用 GraphQL 的服務器結構必須是內省的,或者可由 GraphQL 自己查詢。于是才有了像 GraphiQL 或 GraphQL playground 這樣的強大工具。這兩種工具都可以讓 Facebook 開發人員準確地看到在他們的服務器上使用了哪些查詢和字段。

為討論向 GraphQL 的轉變,以及這些設計原則如何給開發帶來好處。

我們首先深入了解傳統的 REST API 架構和它的不足之處。

3 傳統的 RESTful 架構

REST 架構的設計范式側重于分配 HTTP 請求方法(GET、POST、PUT、PATCH、DELETE)和 URL 端點之間的關系。

GraphQL vs REST API 架构,谁更胜一筹?

在 REST 架構中,方法和端點的每個組合得到不同的封裝功能。如果客戶端需要的數據特定端點 / 方法不提供,則可能需要額外請求。從 REST 請求返回的數據格式依賴于端點—不能保證這些數據會按照前端需要的方式進行格式化。為使用來自響應的數據(格式與缺省情況下從端點返回的格式不同),必須在客戶端編寫數據解析和數據操作。

接下來,讓我們看看 GraphQL 規范與 REST 的不同之處,以及它的優點。這些優點使這個新架構成為特別適合解決客戶端和服務器之間數據交付問題的解決方案。

4 GraphQL 架構

與 RESTful API 一樣,GraphQL API 設計用于處理 HTTP 請求并對這些請求提供響應。無論如何,這就是相似之處。REST API 構建在請求方法和端點之間的連接上,而 GraphQL API 被設計為只通過一個端點,始終使用 POST 請求進行查詢,其 URL 通常是 yourdomain.com/graphql。

GraphQL vs REST API 架构,谁更胜一筹?

請求到達 GraphQL 端點后,客戶端請求的載荷完全在請求體中處理。這個請求體必須遵循 GraphQL 規范,API 必須有適當的服務器端邏輯來處理這些請求并提供適當的響應。

這提供了比 RESTful API 更流暢的客戶端體驗,后者可能要求客戶端針對多個數據塊發出多個請求,并在數據返回后進行操作。

為了闡明 GraphQL 是如何實現這一點的,讓我們分解一下 GraphQL 服務器的結構。

5 GraphQL 服務器

啟用 GraphQL 邏輯的服務器端邏輯由定義了服務器功能的 Documents 組成。這些 Documents 包含可執行文件和類型系統定義。顧名思義,類型系統定義為每個數據字段定義可接受的類型和格式輸入及結果。

可執行文件包含要處理的可能的操作列表,其中包括操作類型(查詢、修改或訂閱)、操作名稱、要查詢或寫入的字段和一個選擇集,該選擇集準確定義了將從操作返回的數據。選擇集是 GraphQL 的最大價值所在——它們允許客戶端查詢特定的數據集并接收包含所請求信息的響應:不多不少。

  1. GET /graphql?query={ books(id:12) { authors { firstName, lastName } title, yearPublished, length }  
  2.  
  3. {  
  4.  
  5.   Query {                 //  operation type 
  6.  
  7.   books (id:12) {         //  operation endpoint 
  8.  
  9.      authors {            //  requested fields 
  10.  
  11.         firstName 
  12.  
  13.         lastName 
  14.  
  15.      }  
  16.  
  17.      title 
  18.  
  19.      yearPublished     
  20.  
  21.     } 
  22.  
  23.   } 
  24.  
有關 GraphQL 規范的結構和語法的更多信息,請參閱 GraphQL 的文檔。(https://graphql.github.io/graphql-spec/June2018/#sec-Overview)

接下來,我們將看下 GraphQL 中查詢的結構。

6 GraphQL 查詢解析

下面是一個結構化的 GraphQL 查詢,用于獲取特定書籍的數據,包括作者的姓和名

  1. GET /graphql?query={ books(id:12) { authors { firstName, lastName } title, yearPublished, length } 
  2.  
  3.  
  4. Query {                 //  operation type 
  5.  
  6. books (id:12) {         //  operation endpoint 
  7.  
  8. authors {            //  requested fields 
  9.  
  10. firstName 
  11.  
  12. lastName 
  13.  
  14.  
  15. title 
  16.  
  17. yearPublished 
  18.  
  19.  
  20.  

這一切都可以通過一個查詢由 GraphQL 服務器邏輯解析和處理完成。當把它與 REST 架構中相同結構的請求進行比較時,GraphQL 的優勢就開始顯現出來了。

讓我們看看下面的 REST 請求結構,然后重點討論其中的一些差異!

7 REST 請求解析

要向 REST API 發出相同的請求,客戶端首先需要向能夠返回圖書數據的端點發送一個請求,并將圖書 id 作為參數傳入:

  1. GET /books/12 

這個請求可能會返回一個包含特定圖書所有數據的對象,例如:

  1. {  
  2. "title" : "The Hitchhiker's Guide to the Galaxy"
  3.  
  4. "authorID"42
  5.  
  6. "yearPublished" : 1978
  7.  
  8. "length"208
  9.  
  10. "genre""Science Fiction" 
  11.  

在我 們的例子里,與相同的 GraphQL 查詢相比,該響應有兩個缺點:

  1. REST 響應包含類似 genre 這樣的額外數據,返回的信息超出了我們的需求。

  2. REST 需要再發送一個請求來獲得我們實際上正在查找的數據:這個特定作者的所有書籍。

為了獲得這些數據,我們需要使用我們的 authorID 發出一個額外的請求:

  1. GET /authors/42 

這個請求的響應應該包含我們正在查找的所有數據:

  1. {   
  2. "firstName""Douglas",   
  3. "lastName""Adams" 

現在我們已經有了需要的所有書籍和作者數據,響應解析由客戶端完成。現在,前端應用程序必須將來自不同端點的數據組合在一起,用于實現期望的功能。總的來說,與 REST API 相比,GraphQL 提供的性能優勢可以為前端開發人員帶來回報。使用 GraphQL 規范創建服務器可能需要更多的設置以及編寫預測性的服務器端邏輯來解析和處理請求。

雖然 GraphQL 的設置成本可能比傳統的 REST 架構要高,但是,更易于維護的代碼、健壯的開發工具和精簡的客戶端查詢所帶來的好處通常會超過成本。

責任編輯:張燕妮 來源: 架構頭條
相關推薦

2024-07-31 09:39:33

2025-08-05 08:13:19

2014-03-06 15:07:41

青橙小米

2022-07-20 08:16:54

Lombokjava工具

2010-05-28 11:21:17

2020-03-06 09:21:28

PWA原生應用Web

2018-06-12 10:09:41

編程語言PythonJava

2017-06-08 15:38:41

2020-02-02 15:42:22

PythonC++編程語言

2022-08-24 08:00:00

Node.isJavaScriptDeno

2017-01-11 14:38:39

編程語言Java

2023-08-09 18:08:35

ChatGPTStackOverflow

2017-11-13 15:38:03

VMwareOpenStack混合云

2018-08-15 08:33:33

編程Go語言開發

2018-10-12 13:54:26

2019-01-04 09:59:14

KafkaRabbitMQMQ

2025-01-03 09:27:14

2010-05-21 16:36:09

GoogleCode

2013-02-19 13:13:33

SurfaceiPad

2010-07-27 14:36:31

Flex Array
點贊
收藏

51CTO技術棧公眾號

成人看片网页| 欧美成熟毛茸茸| 激情综合亚洲| 亚洲精品视频在线观看视频| 国产黄色特级片| 免费在线观看av网站| 国产成人av电影在线播放| 91国内在线视频| 精品伦精品一区二区三区视频密桃| 成人久久精品| 色婷婷久久久综合中文字幕| 天天干天天操天天干天天操| 亚洲人午夜射精精品日韩| 久久精品123| 欧美成人性生活| 中文字幕网站在线观看| 97久久超碰| 欧美日韩一级黄| 日韩av在线第一页| 成人免费网站在线观看视频| 久久影音资源网| 97se在线视频| 中文字幕人妻一区二区在线视频| 日韩午夜免费| 久久国产精品亚洲| 娇妻被老王脔到高潮失禁视频| 98视频精品全部国产| 欧美日韩在线播放| 亚洲熟女乱色一区二区三区| aaa大片在线观看| 国产人久久人人人人爽| 狠狠色综合一区二区| 精品国产亚洲AV| 久久精品国产在热久久| 日本在线精品视频| 日韩三级视频在线| 欧美日本三区| 美女性感视频久久久| 国产真人做爰视频免费| 视频福利一区| 精品国产人成亚洲区| 肉色超薄丝袜脚交| 亚洲欧洲日韩精品在线| 欧美午夜片在线看| 国产情侣av自拍| 中文字幕乱码在线播放| 香蕉成人啪国产精品视频综合网 | 69堂免费视频| 丁香高清在线观看完整电影视频| 亚洲欧美一区二区三区国产精品 | 欧美三级乱人伦电影| 精品人妻一区二区三区四区在线| 第一中文字幕在线| 一区二区国产盗摄色噜噜| 老汉色影院首页| 超碰最新在线| 亚洲精品v日韩精品| 欧美a级黄色大片| 国产不卡在线| 亚洲影院久久精品| 国产成人一区二区三区别| 三级福利片在线观看| 一区二区三区四区国产精品| 屁屁影院ccyy国产第一页| 青草av在线| 亚洲va天堂va国产va久| 国产黄视频在线| 黄色软件视频在线观看| 色婷婷综合久久| 一本色道久久亚洲综合精品蜜桃| 国产精品亚洲成在人线| 欧美精品1区2区3区| 午夜激情影院在线观看| 亚洲超碰在线观看| 欧美精品一区二区三区蜜桃 | 欧美日韩在线网站| 最新69国产成人精品视频免费| 久久午夜精品视频| 天天做综合网| 国内精品久久久久影院优 | 欧美日本高清视频在线观看| 五月花丁香婷婷| 凹凸成人在线| 亚洲网在线观看| chinese全程对白| 亚洲视频观看| 国产精品久久久久久超碰| 亚洲在线观看av| 国产成人精品三级| 黄色一区三区| 亚洲精品承认| 香蕉影视欧美成人| 亚洲色图久久久| 日本精品一区二区三区在线观看视频| 亚洲电影免费观看| 日本精品久久久久中文| 国内精品福利| 日本久久久久久久| 精品黑人一区二区三区国语馆| 99久久精品免费精品国产| 日韩欧美精品在线不卡| 亚洲综合图区| 欧美亚洲日本一区| 伊人久久一区二区三区| 成人免费电影网址| 97香蕉超级碰碰久久免费软件| 国产乱码在线观看| 成人av免费在线观看| 亚洲一区三区视频在线观看| 欧美男人天堂| 日韩一区二区免费视频| 中文字字幕码一二三区| 亚洲五月综合| 国产成一区二区| 亚洲精品视频网| 中文字幕五月欧美| 那种视频在线观看| 高清精品视频| 久久久国产精品x99av| 天堂网免费视频| 大美女一区二区三区| 伊人精品久久久久7777| 黑人巨大精品欧美一区二区桃花岛| 日韩一区二区在线免费观看| 黄色片网站免费| 国产午夜久久| 国产精品高清一区二区三区| 欧美边添边摸边做边爱免费| 欧亚一区二区三区| 中文字幕乱码一区| 国内精品久久久久久久影视蜜臀| 成人国产在线激情| 91视频在线观看| 色欧美片视频在线观看在线视频| 日本黄色录像片| 黄色精品一区| 成人在线观看av| 制服丝袜中文字幕在线| 91麻豆精品国产自产在线观看一区 | 清纯唯美亚洲经典中文字幕| 欧美大秀在线观看| 国产露脸91国语对白| 国产女主播在线一区二区| 欧美牲交a欧美牲交| 久久成人福利| 2019亚洲日韩新视频| 无码精品一区二区三区在线| 亚洲综合久久久| 精品无码人妻少妇久久久久久| 欧美精品色网| 国产日韩欧美一区二区| av影院在线| 亚洲精品99999| 免费观看一区二区三区毛片| 99九九99九九九视频精品| 国产无限制自拍| 秋霞影视一区二区三区| 欧美一区二区三区免费观看| 久久经典视频| 欧美日韩一区成人| 男人与禽猛交狂配| 精品一区二区三区蜜桃| 亚洲一区 在线播放| 亚洲精品影片| 2020国产精品视频| 国产私拍精品| 欧美精选在线播放| 欧美又粗又大又长| 成人黄页毛片网站| 男人操女人免费软件| 精品国产一区二区三区香蕉沈先生| 国产福利成人在线| 黄色动漫在线| 亚洲精品v欧美精品v日韩精品 | 欧美乱熟臀69xxxxxx| 中文字幕在线有码| 99麻豆久久久国产精品免费| 可以免费在线看黄的网站| 日韩电影免费在线观看| 亚洲自拍偷拍区| 华人av在线| 最近中文字幕mv在线一区二区三区四区 | 国产一区二区自拍| 91精品影视| 欧美成人午夜激情在线| 欧美日本韩国一区二区| 欧美久久久久免费| 日韩精品成人一区| 国产精品麻豆欧美日韩ww| 动漫av在线免费观看| 视频一区在线播放| 狠狠精品干练久久久无码中文字幕| 欧美激情网址| 亚洲一区二区三区sesese| 伊人网在线播放| 久久综合色影院| 九九热视频在线观看| 91精品国产麻豆国产自产在线 | 韩国美女久久| 九九九久久久久久| 成人在线高清视频| 亚洲大胆人体av| 在线观看亚洲一区二区| 午夜激情一区二区三区| 又嫩又硬又黄又爽的视频| av电影天堂一区二区在线观看| 手机在线看福利| 亚洲免费精品| 欧洲金发美女大战黑人| 精品久久影院| 国产精品美女黄网| 国产精品欧美一区二区三区不卡| 欧美亚洲国产视频小说| 26uuu亚洲电影在线观看| 国产一区二区精品丝袜| 丰满人妻一区二区三区免费视频| 欧美美女直播网站| 久久久久在线视频| 精品日韩美女的视频高清| 美女的奶胸大爽爽大片| 国产精品久久久久影院色老大| 成人片黄网站色大片免费毛片| 成人一区二区视频| 69久久精品无码一区二区| 麻豆免费看一区二区三区| 黑鬼大战白妞高潮喷白浆| 伊人成人在线| www.xxx麻豆| 欧美成人日本| 992tv成人免费观看| 日韩在线视屏| 亚洲精品一区二区三区樱花 | 日韩一级黄色av| 国产有码在线| 亚洲欧美一区二区三区情侣bbw| 日本精品999| 亚洲高清不卡av| 丁香花免费高清完整在线播放| 日韩一级完整毛片| www.好吊色| 精品国产91久久久久久久妲己| 国产a级免费视频| 日韩三级免费观看| 性欧美8khd高清极品| 日韩精品中文字幕一区| www.激情五月| 亚洲国产精品va在线看黑人| 丰满少妇被猛烈进入| 亚洲成人在线网| 色视频在线观看免费| 亚洲精品一区二区久| 免费国产在线观看| 亚洲一级片在线看| 97超碰国产一区二区三区| 日韩亚洲国产中文字幕| 国产黄a三级三级三级av在线看| 久久亚洲国产精品| 性欧美video高清bbw| 欧美激情在线一区| av影院在线免费观看| 欧美一区二区.| 成人国产精品| 成人免费看片视频| 香蕉免费一区二区三区在线观看| 国产精品乱码视频| 国产成人影院| 国产免费色视频| 欧美日韩影院| 久久人妻精品白浆国产| 美女尤物国产一区| 风韵丰满熟妇啪啪区老熟熟女| kk眼镜猥琐国模调教系列一区二区| 亚洲av网址在线| 日本一区二区成人| 少妇aaaaa| 精品久久香蕉国产线看观看gif| 激情五月婷婷网| 在线播放/欧美激情| 人妻精品一区一区三区蜜桃91| 亚洲男人av电影| 久久精品视频观看| 久久久久久网站| 日韩高清在线| 99www免费人成精品| 免费成人高清在线视频theav| 一区二区国产日产| 国语自产精品视频在线看8查询8| av无码精品一区二区三区| 激情文学综合丁香| 人妻少妇精品视频一区二区三区| 国产精品久久久久影院| 日本中文字幕在线免费观看| 欧美色视频在线| 日本韩国免费观看| 日韩一区二区欧美| 瑟瑟视频在线看| 成人激情av在线| 婷婷综合成人| 国产精品一区在线免费观看| 麻豆91精品| 在线中文字日产幕| 国产精品美女久久久久久2018| 男女啊啊啊视频| 91精品国产综合久久香蕉的特点| 黄色大片在线看| 97国产suv精品一区二区62| 中文成人在线| 日韩啊v在线| 国产精品久久久久久模特| 少妇性l交大片7724com| 国产精品网曝门| 国偷自拍第113页| 欧美mv日韩mv国产网站| 久久77777| 国产精品亚洲欧美导航| 九一亚洲精品| 91九色在线观看视频| 国产成人免费视频一区| 亚洲怡红院在线观看| 日本韩国欧美三级| 日韩资源在线| 97视频网站入口| 大奶一区二区三区| av一区二区三区免费观看| 国产综合色在线| 91精品少妇一区二区三区蜜桃臀| 色av综合在线| 欧美女v视频| 日韩av免费一区| 中文精品一区二区| 九九九九免费视频| 波多野洁衣一区| 国产午夜精品一区二区理论影院| 欧美一区二区三区四区在线观看| 在线a免费看| 国产九九精品视频| 日韩理论电影院| 在线观看免费av网址| 国产肉丝袜一区二区| 亚洲精品无码久久久久| 亚洲午夜精品久久久久久久久久久久| 午夜影院一区| 久久综合九色欧美狠狠| 一区二区三区高清视频在线观看| 亚洲av成人片无码| 亚洲成人久久影院| 无码国精品一区二区免费蜜桃| 97国产精品视频| 香蕉精品久久| av片中文字幕| 国产欧美一区二区精品忘忧草| 亚洲精品久久久久久久蜜桃| 亚洲最新中文字幕| 高清欧美日韩| 国产av第一区| 成人免费视频app| 久久久久久久久久影院| 亚洲日本欧美日韩高观看| 四虎成人在线| 五月天综合婷婷| 成人免费的视频| 亚洲毛片一区二区三区| 一个色综合导航| 伊人久久一区| 真人抽搐一进一出视频| www久久久久| 中文字幕人妻互换av久久| 久久久精品影院| 欧美成人一区在线观看| 国产精品亚洲αv天堂无码| 中文字幕国产一区| 亚洲成人黄色片| 欧美专区国产专区| 久久密一区二区三区| 亚洲 自拍 另类 欧美 丝袜| 亚洲成人精品在线观看| 成人在线观看黄色| 国产v亚洲v天堂无码| 久久精品中文| 日韩欧美123区| 亚洲国语精品自产拍在线观看| 精品欧美一区二区三区在线观看| 国产又大又长又粗又黄| 成人高清视频在线| 中文无码精品一区二区三区| 欧美大码xxxx| 亚洲人成网亚洲欧洲无码| 午夜剧场在线免费观看| 亚洲第一激情av| 91欧美在线视频| 国产精品久久亚洲| 理论电影国产精品| 日韩无码精品一区二区三区| 自拍偷拍亚洲一区| 牛牛影视一区二区三区免费看| 无限资源日本好片| 欧美色另类天堂2015| av网址在线看| 日韩wuma| 91老司机福利 在线|