精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

综合久久久久久| 韩国成人福利片在线播放| 国产亚洲精品激情久久| 超碰在线播放91| 青草影视电视剧免费播放在线观看| 波多野结衣一区二区三区| 日韩美女免费线视频| caoporn91| 丝袜久久网站| 欧美一区二视频| 国产无套内射久久久国产| 五月天婷婷在线视频| 99视频超级精品| 成人av色在线观看| 黑人精品无码一区二区三区AV| 91九色精品国产一区二区| 日韩成人xxxx| 韩国三级在线播放| 欧美天堂一区二区| 色综合久久久久网| 国产美女在线一区| 国产精品刘玥久久一区| 亚洲国产经典视频| 你懂的视频在线一区二区| 国内精品久久久久久久久久 | 91毛片在线观看| 亚洲va久久久噜噜噜| 伊人久久中文字幕| 国产精品免费看| 欧美日韩成人黄色| 97在线观看视频免费| 成人区精品一区二区婷婷| 日韩黄色高清视频| 91精品国产高清91久久久久久| 69堂免费精品视频在线播放| 黑丝美女久久久| 蜜臀av色欲a片无码精品一区 | 91亚洲一区二区| 精品3atv在线视频| 欧美午夜美女看片| 国产原创中文在线观看| 欧美1—12sexvideos| 亚洲欧美日韩久久| 黄色免费高清视频| 蜜桃av在线免费观看| 欧美国产乱子伦| 日韩欧美第二区在线观看| 五月婷婷开心中文字幕| 99热在这里有精品免费| 激情欧美一区二区三区中文字幕 | 国产亚洲一区二区精品| 国精产品一区一区三区免费视频| 日韩成人一级| 日韩电影免费在线观看中文字幕| 熟妇高潮一区二区| 国产精品qvod| 亚洲精品动漫100p| 波多野结衣av在线免费观看| 亚洲最大在线| 在线视频中文亚洲| 日本二区三区视频| 欧美在线免费一级片| 欧美高清在线观看| 日韩欧美一区二区一幕| 久久福利毛片| 国产精品视频1区| 91九色蝌蚪91por成人| 国产毛片精品视频| av噜噜色噜噜久久| 日本激情一区二区| 久久久影视传媒| 亚洲精品一区二区三区樱花| 欧美一区二区三区| 国产精品色噜噜| 日韩精品久久一区二区| www欧美xxxx| 一本久道中文字幕精品亚洲嫩| 欧美三级理论片| 秋霞一区二区| 日韩精品在线第一页| 日韩免费成人av| 欧美久久成人| 欧美有码在线观看视频| 91精品国自产| a美女胸又www黄视频久久| 欧美日韩高清免费| 免费在线观看av| 香蕉成人伊视频在线观看| 国产淫片免费看| 99er精品视频| 日韩电影免费观看在线观看| 国产99在线 | 亚洲| 国产精品久久| 国产成人精品久久久| 99久久亚洲精品日本无码| 成人av中文字幕| 亚洲午夜精品久久| 182在线播放| 欧美精品少妇一区二区三区| 国产精品无码在线| 亚洲成av人片乱码色午夜| 欧洲成人免费aa| 亚洲av无码国产精品久久不卡| 久久天天做天天爱综合色| 激情视频小说图片| 91九色综合| 亚洲国产精品一区二区三区| 精品无码一区二区三区蜜臀| 国产美女精品| 波多野结衣成人在线| sese在线视频| 日韩欧美在线视频观看| 亚洲精品成人无码毛片| 成人综合一区| 日韩av电影中文字幕| 黄色www视频| **性色生活片久久毛片| 九色91popny| 日韩高清在线免费观看| 久久综合电影一区| 一级黄色a毛片| 久久精品欧美日韩| 日本网站免费在线观看| 亚洲成人黄色| 精品国产欧美成人夜夜嗨| 一区二区三区麻豆| 久久精品视频免费| 成人在线免费观看av| 国产精品x8x8一区二区| 欧美激情按摩在线| 国产高清免费在线观看| 中文字幕佐山爱一区二区免费| 精品www久久久久奶水| 麻豆视频一区| 国内精品伊人久久| 丰满人妻妇伦又伦精品国产| 亚洲激情欧美激情| 天堂av.com| 欧美不卡高清| 痴汉一区二区三区| 中文国产字幕在线观看| 日韩欧美亚洲国产另类| 91在线播放观看| 国产精品自拍三区| 欧洲精品视频在线| 精品一区二区三区中文字幕在线| 蜜月aⅴ免费一区二区三区| 国产精品一区二区三区在线免费观看| 国产视频一区二区三区在线观看| 国产福利视频在线播放| 国产精品美女久久久久久不卡| 欧美亚洲在线观看| 欧美91精品久久久久国产性生爱| 色综合久久中文字幕综合网| 91精品国自产在线| 麻豆国产精品777777在线| 国产91av视频在线观看| 成人51免费| 久久91亚洲精品中文字幕奶水| 精品久久久久中文慕人妻| 亚洲综合色噜噜狠狠| 在线观看你懂的视频| 伊人狠狠色j香婷婷综合| 国产在线欧美日韩| 亚洲最新无码中文字幕久久| 中文字幕成人精品久久不卡| 亚洲图片中文字幕| 亚洲精品国产第一综合99久久| 乳色吐息在线观看| 中日韩视频在线观看| 日本高清一区| 亚洲人成777| 久久久午夜视频| 日韩福利一区二区| 欧美美女激情18p| 久久精品国产亚洲av麻豆色欲 | 成人免费视频网站入口| 成人在线黄色电影| 国产亚洲精品久久久| 一起草av在线| 午夜成人免费电影| av在线播放中文字幕| 国产成人在线网站| 国产一区二区视频免费在线观看| 久久在线视频| 国产精品一区二区三区不卡| 国产韩日精品| 欧美激情精品久久久久久黑人| 牛牛影视精品影视| 欧美一区二区三区白人| 国产黄色片免费看| 日韩毛片视频在线看| 精品人妻一区二区三区日产乱码卜| 蜜臀av性久久久久蜜臀aⅴ| 激情五月婷婷六月| 久久成人综合| 国内精品久久国产| 在线欧美激情| 日本国产高清不卡| 国精产品一区一区三区mba下载| 国产香蕉97碰碰久久人人| 丰满人妻一区二区| 欧美日韩国产不卡| 美女又爽又黄免费视频| 亚洲在线一区二区三区| 黄色av片三级三级三级免费看| 不卡一卡二卡三乱码免费网站| 岛国毛片在线播放| 久久www成人_看片免费不卡| 无码人妻精品一区二区蜜桃网站| 日韩中文字幕a| 国产在线视频欧美一区| 欧美自拍视频在线观看| 俄罗斯一级**毛片在线播放| 日韩中文字幕在线精品| 精品影院一区| 精品视频久久久久久| 亚洲精品国偷拍自产在线观看蜜桃| 欧美视频日韩视频| 国产免费一级视频| 精品国产老师黑色丝袜高跟鞋| 国产精品99久久久久久成人| 中文一区二区完整视频在线观看| 久久丫精品国产亚洲av不卡| 成人三级伦理片| 2018国产精品| 国产高清不卡一区| 国产成人美女视频| 麻豆高清免费国产一区| 狠狠躁狠狠躁视频专区| 美女诱惑黄网站一区| 日本在线xxx| 亚洲国产综合在线看不卡| 337p亚洲精品色噜噜狠狠p| 天天综合精品| 国产香蕉一区二区三区| 欧美aaaa视频| 影音先锋欧美资源| 国产精品88久久久久久| 性欧美18一19内谢| 亚欧美无遮挡hd高清在线视频| 在线观看欧美一区| 小说区亚洲自拍另类图片专区 | 欧美涩涩网站| 成年人网站国产| 极品少妇一区二区三区| 日韩 欧美 视频| 欧美在线亚洲| 日本阿v视频在线观看| 亚洲乱码久久| 97视频在线免费播放| 麻豆9191精品国产| 天天影视综合色| 久久精品国产免费| 婷婷中文字幕在线观看| 国产成人av影院| 四虎精品一区二区| 91色视频在线| 人成免费在线视频| 亚洲另类中文字| 日本三级2019| 色婷婷综合中文久久一本| 中文在线免费观看| 欧美一区二区三区婷婷月色| 丰满人妻一区二区三区免费视频| 亚洲激情电影中文字幕| 国产在线一在线二| 久久影院中文字幕| 成人影音在线| 国产成人亚洲精品| 国产高清精品二区| 国产一区二区三区高清| 国产精品午夜一区二区| 精品理论电影在线| 亚洲欧洲国产日韩精品| 亚州av乱码久久精品蜜桃| 青青青青草视频| 高清一区二区中文字幕| 亚洲精品日韩激情在线电影| 国产精品白丝一区二区三区 | jiujiure精品视频播放| 麻豆一区二区三区在线观看| 国产农村妇女精品一二区| 国产一二三区av| 成人免费视频网站在线观看| 国产精久久一区二区三区| 亚洲日本在线a| 91丝袜一区二区三区| 日韩一区二区免费高清| 日本中文字幕一区二区有码在线| 久久精品国产综合| av资源中文在线| 91精品在线影院| 亚洲日本三级| 欧美交换配乱吟粗大25p| 日韩中文字幕亚洲一区二区va在线| 波多野结衣中文字幕在线播放| 久久伊99综合婷婷久久伊| 国产精品免费人成网站酒店| 狠狠躁夜夜躁人人躁婷婷91 | 精品亚洲一区二区| 成人在线直播| 国产va免费精品高清在线观看| 日韩亚洲精品在线观看| 欧美性天天影院| 亚洲国产二区| 亚洲精品无码久久久久久久| 国产欧美一区二区精品久导航| 黄网站免费在线| 欧美一区二区三区视频在线观看| 国产高清免费av在线| 久久久亚洲天堂| 久久九九精品视频| 亚洲欧洲另类精品久久综合| 亚洲一区图片| 性色av蜜臀av浪潮av老女人 | 亚洲视频日韩精品| 成人爽a毛片免费啪啪动漫| 成人午夜高潮视频| 日韩精品永久网址| 免费看a级黄色片| 另类春色校园亚洲| 欧美精品亚洲精品| 136国产福利精品导航网址| 日本黄色一级网站| 亚洲女性喷水在线观看一区| 91福利在线观看视频| 自拍亚洲一区欧美另类| 美女网站视频一区| 日本黑人久久| 日韩精品乱码免费| 亚洲一区二区自偷自拍 | 精品999在线| 国产欧美一区二区精品久导航 | 国产一区二区在线观看免费| 国精产品久拍自产在线网站| 欧美日韩在线免费视频| av二区在线| 国产精品一区久久| 色琪琪久久se色| 特黄视频免费观看| 亚洲欧美乱综合| 99精品在线看| 欧美精品videos另类日本| 中文在线综合| 成熟丰满熟妇高潮xxxxx视频| www.一区二区| 国产99久久久| 日韩精品中文字幕久久臀| 成年美女黄网站色大片不卡| 青青草久久网络| 蜜桃视频一区二区三区在线观看| 国产成人免费在线观看视频| 337p亚洲精品色噜噜| 四虎av在线| 精品国产一区二区三区四区精华| 性一交一乱一区二区洋洋av| 日本高清www| 欧美视频一区二区| 国产区在线观看| 国产99视频精品免费视频36| 国产日韩亚洲| 永久免费av无码网站性色av| 欧美蜜桃一区二区三区| jizzjizz亚洲| 国内精品视频在线播放| 狂野欧美一区| 国产精品精品软件男同| 精品国产髙清在线看国产毛片 | 激情欧美国产欧美| 欧美深性狂猛ⅹxxx深喉| 欧洲精品在线观看| av在线播放国产| 精品日产一区2区三区黄免费| 日韩电影一区二区三区四区| 成人观看免费视频| 精品一区二区三区四区| 精品美女一区| r级无码视频在线观看| 日本一区二区免费在线观看视频 | 午夜欧美福利视频| 亚洲蜜臀av乱码久久精品| 偷拍自拍在线视频| 国产综合视频在线观看| 亚洲人体大胆视频| 国产18无套直看片| 亚洲国产黄色片| 欧美三级电影网址| 国产精品自拍片| 亚洲欧美日韩在线不卡| 免费人成在线观看网站| 91久久久一线二线三线品牌| 久久久久99| 黄色一级片在线免费观看| 亚洲人成网站免费播放| 欧美久久亚洲| 黄色三级视频在线| 激情成人中文字幕| 超碰在线免费播放| 天堂一区二区三区|