GraphQL實戰

GraphQL實戰

《GraphQL實戰 寫給全棧工程師們》是2019年機械工業出版社出版的圖書。作者王北南,本書內容涵蓋前端、後端和大數據平台開發,非常適合全棧程式設計師閱讀,也可作為前端程式設計師、後端程式設計師、大數據工程師、算法工程師和技術型產品經理提升知識儲備的參考書。

基本介紹

  • 中文名:GraphQL實戰 寫給全棧工程師們
  • 作者:王北南
  • 出版社:機械工業出版社
  • ISBN:9787111630937
內容簡介,圖書目錄,作者簡介,

內容簡介

《GraphQL實戰——寫給全棧工程師們》以當下流行的移動網際網路套用開發為切入點,結合作者多年的前後端實際架構經驗,針對目前網際網路上程式設計師們對GraphQL的疑問和誤解,並輔以業界真實案例,對前後端設計中的難點要點分別加以介紹。在前端,本書重點講述了如何提升用戶體驗和回響速度;在後端,主要講解了在高並發海量數據環境下的設計與最佳化;*後,還介紹了如何讓GraphQL與大數據平台整合來訓練機器學習模型。
《GraphQL實戰——寫給全棧工程師們》內容涵蓋前端、後端和大數據平台開發,非常適合全棧程式設計師閱讀,也可作為前端程式設計師、後端程式設計師、大數據工程師、算法工程師和技術型產品經理提升知識儲備的參考書。

圖書目錄

前言
導讀—本書為快速學習設計
第1章 GraphQL API設計和全棧開發1
1.1 什麼是GraphQL2
1.2 分散式系統2
1.2.1 擴展性3
1.2.2 可靠性3
1.2.3 遠程資源共享4
1.2.4 更強的處理能力4
1.3 C/S架構與API4
1.3.1 C/S架構4
1.3.2 前端與後端5
1.3.3 全棧程式設計師5
1.3.4 應用程式接口6
1.4 RESTful API的起源與特點7
1.4.1 倉庫保管員的窘境7
1.4.2 REST無狀態的好處8
1.4.3 RESTful API是否真的無狀態8
1.4.4 RESTful API是否是數據傳輸協定9
1.4.5 RESTful API的好處是什麼9
1.5 RESTful API的主要問題10
1.5.1 數據定製的問題10
1.5.2 多次請求的問題10
1.5.3 異常處理的問題10
1.5.4 返回數據格式未知的問題11
1.5.5 請求Endpoint和方式過多的
問題11
1.6 GraphQL如何解決RESTful API的
問題11
1.6.1 GraphQL可以自由定製數據11
1.6.2 GraphQL可以把多次請求合併為
一個12
1.6.3 GraphQL錯誤以及異常信息
明確12
1.6.4 GraphQL返回數據的形式和查詢
請求同構13
1.6.5 GraphQL使用單一的Endpoint14
1.6.6 GraphQL替代了什麼14
1.7 GraphQL引發的疑慮15
1.7.1 GraphQL是否還是RESTful15
1.7.2 GraphQL增大了後端系統設計的
難度15
1.7.3 GraphQL是否會帶來後端性能
問題15
1.7.4 遷移到GraphQL的代價16
1.7.5 GraphQL是該前端驅動還是後端
驅動16
1.8 GraphQL全棧框架的選用16
1.8.1 Relay17
1.8.2 Apollo17
第2章 GraphQL初體驗—電商API設計18
2.1 基本開發環境的搭建19
2.2 和GraphQL互動20
2.2.1 實時互動界面GraphiQL的使用20
2.2.2 通過curl傳送請求21
2.2.3 使用第三方客戶端21
2.3 Schema與定義數據類型22
2.3.1 強類型的查詢語言22
2.3.2 伺服器端的Schema23
2.3.3 標量類型24
2.3.4 自定義複雜類型25
2.3.5 枚舉26
2.3.6 列表以及對象的列表27
2.4 定義操作28
2.4.1 唯讀查詢操作28
2.4.2 可寫修改操作30
2.4.3 訂閱操作31
2.4.4 傳遞輸入類型31
2.4.5 操作也是欄位33
2.5 精煉數據模型與操作33
2.5.1 接口和繼承33
2.5.2 聯合35
2.6 精煉查詢36
2.6.1 使用變數36
2.6.2 使用別名37
2.6.3 使用片段38
2.6.4 類型條件39
2.6.5 使用Directive40
2.6.6 後端工程師的福音41
2.7 簡單數據驗證41
2.7.1 必填值的驗證42
2.7.2 標量值的驗證42
第3章 電商網站前端開發44
3.1 GraphQL前端開發要點45
3.1.1 前端開發的主要任務45
3.1.2 前端開發的難點46
3.1.3 前端技術的選型46
3.2 前端React項目初始化47
3.2.1 React特點簡介47
3.2.2 React 整合GraphQL前端系統
設計48
3.2.3 創建React前端工程49
3.2.4 安裝Apollo客戶端49
3.2.5 初始化GraphQL客戶端50
3.2.6 手動傳送查詢51
3.3 唯讀數據的React UI組件51
3.3.1 構建GraphQL Query查詢51
3.3.2 定義列表元素組件52
3.3.3 定義列表組件52
3.3.4 綁定靜態查詢和UI組件53
3.3.5 使用Query組件54
3.3.6 從Query組件中接收一個參數55
3.3.7 數據的接收以及出錯處理56
3.3.8 手動刷新57
3.4 修改數據的React UI組件57
3.4.1 定義一個帶有變數的Mutation
操作58
3.4.2 使用Mutation UI組件58
3.5 支持訂閱59
3.5.1 什麼時候使用訂閱59
3.5.2 訂閱是如何實現的60
3.6 本地數據60
第4章 基於Node.js的GraphQL後端61
4.1 GraphQL後端架構思想62
4.1.1 “薄”層設計62
4.1.2 “門戶”設計64
4.1.3 面向業務設計64
4.2 GraphQL層的職責與實現65
4.2.1 GraphQL層的職責65
4.2.2 GraphQL層的實現65
4.2.3 Resolver函式與分治策略67
4.3 Apollo GraphQL後端框架68
4.3.1 依賴庫的安裝68
4.3.2 定義和解析Schema69
4.3.3 綁定處理查詢操作函式69
4.4 詳解Resolver函式72
4.4.1 Resolver的各種返回類型72
4.4.2 Resolve一個類型72
4.4.3 Resolve一個複雜類型欄位73
4.4.4 Resolve一個標量欄位75
4.4.5 Resolve一個自定義標量欄位77
4.4.6 Resolve一個列表80
4.5 GraphQL後端驗證以及錯誤
處理81
4.5.1 簡單方式81
4.5.2 使用自定義標量類型進行驗證82
4.6 異步IO84
4.6.1 基於異步非阻塞IO的JavaScript
實現84
4.6.2 同步還是異步85
4.6.3 異步Resolver85
4.7 使用JavaScript開發後端服務的
問題86
第5章 基於Go語言協程的GraphQL服務88
5.1 使用協程和上下文89
5.1.1 使用協程的原因89
5.1.2 協程和GraphQL服務90
5.1.3 上下文和作用域90
5.1.4 派生上下文91
5.2 Go語言的Web服務和中間件92
5.2.1 構建Web服務92
5.2.2 Web服務中間件93
5.2.3 基於中間件的後端架構94
5.2.4 數據收集中間件95
5.2.5 資料庫會話中間件95
5.3 G

作者簡介

Twitter核心服務組高級研發工程師,畢業於美國Syracuse大學計算機科學與工程學院,獲博士學位,曾任國內多家公司CTO、技術總監、首席架構師。
在前後端以及全棧研發一線奮鬥十餘載,專注於高並發、高可用微服務平台以及大數據平台架構,擁有重構並最佳化千億級日訪問量微服務以及數據採集經驗。力求用淺顯的語言來講述親身的實戰經驗和國內外的先進理論,以滿足中國網際網路行業的實際需求。

相關詞條

熱門詞條

聯絡我們