hapi.js 實戰

hapi.js 實戰

《hapi.js 實戰》是2017.09.01清華大學出版社出版的圖書,圖書作者是[美] Matt Harrison 。

基本介紹

  • 書名:hapi.js 實戰
  • 作者:[美] Matt Harrison
  • 譯者:梁宵、郭美青、翟懿博 
  • ISBN:9787302479772
  • 定價:68元
  • 出版社:清華大學出版社 
  • 出版時間:2017.09.01
內容簡介,目錄,

內容簡介

    hapi.js是圍繞三個基本理念構建的Node.js開發框架。一 是開發效率,hapi簡明的設定允許快速構建和運行套用;二 是可維護性,hapi的模組化設計方便了擴展和改進;三是靈 活性,可用外掛程式來擴展和自定義hapi的輕量級核心。  

    目錄

    第I部分入門
    第1章hapi簡介3
    1.1hapi是什麼4
    1.1.1hapi的特色6
    1.1.2hapi是哪類框架8
    1.2hapi的組成部分11
    1.2.1伺服器13
    1.2.2連線13
    1.2.3路由13
    1.2.4handler13
    1.2.5外掛程式13
    1.3何時應該(不該)使用hapi14
    1.3.1何時應該使用hapi14
    1.3.2何時不應該使用hapi15
    1.4hapi的運作方式15
    1.4.1安裝hapi15
    1.4.2創建伺服器16
    1.4.3添加路由16
    1.4.4註冊外掛程式17
    1.4.5運行hapi18
    1.5獲得幫助18
    1.5.1hapi.js網站19
    1.5.2MakeMehapi19
    1.5.3GitHub19
    1.5.4IRC19
    1.5.5StackOverflow20
    目錄
    1.5.6閱讀代碼20
    1.6小結20
    第2章構建API21
    2.1設計API21
    2.1.1你應該接受這個任務21
    2.1.2收集需求22
    2.1.3設計API接口22
    2.2準備工作23
    2.2.1工作目錄23
    2.2.2準備資料庫和樣本數據23
    2.2.3sqlite3node模組24
    2.3獲取和搜尋食譜25
    2.3.1server.route()介紹25
    2.3.2路由handler26
    2.3.3接口A:獲取所有食譜28
    2.3.4接口A:搜尋食譜30
    2.3.5接口B:獲取單一食譜31
    2.4編寫可維護的代碼32
    2.4.1模組化路由32
    2.4.2用好server.bind():設定
    handler中的上下文33
    2.4.3模組化handler35
    2.5身份驗證37
    2.5.1模式和策略37
    2.5.2實現不記名token身份驗證38
    2.5.3使用用戶憑據40
    XVIhapi.js實戰
    2.6食譜創建和標星40
    2.6.1測試接口40
    2.6.2接口C:創建食譜41
    2.7小結44
    第3章構建網站45
    3.1DinDin網站45
    3.1.1網站的樣子45
    3.1.2網站是如何運作的47
    3.1.3設定47
    3.2網頁和靜態內容服務49
    3.2.1靜態檔案服務49
    3.2.2整個目錄服務51
    3.2.3server.views():使用Handlebars
    動態渲染視圖53
    3.2.4DRY視圖:布局和片段57
    3.3使用外部API60
    3.3.1使用Wreck:調用API60
    3.3.2動態主頁62
    3.3.3食譜詳情頁62
    3.3.4視圖helper65
    3.4管理登錄和用戶會話67
    3.4.1hapi-auth-cookie外掛程式67
    3.4.2表單69
    3.4.3實現登錄71
    3.4.4創建食譜75
    3.4.5實現註銷78
    3.5小結79
    第II部分擴展工具箱
    第4章深入理解路由和handler83
    4.1深入理解路由83
    4.1.1hapi的路由:路由的排序和
    衝突處理83
    4.1.2路由方法84
    4.1.3參數化路徑85
    4.1.4hapi如何選取路由88
    4.2構建自定義handler90
    4.2.1國際化例子91
    4.2.2解析Accept-Language
    header92
    4.2.3第一個實現93
    4.2.4再次簡化94
    4.3伺服器方法96
    4.4路由先決條件99
    4.4.1異步JavaScript的並發問題99
    4.4.2指定路由先決條件101
    4.4.3使用帶有先決條件的伺服器
    方法102
    4.4.4多重串列先決條件103
    4.4.5並發先決條件:並行地運行
    任務105
    4.5管理檔案上傳107
    4.5.1使用數據輸出:把檔案內容
    讀入記憶體108
    4.5.2使用流輸出:以流的方式獲取
    檔案109
    4.5.3使用檔案輸出:把檔案存儲到
    磁碟110
    4.5.4額外的payload設定111
    4.4小結111
    第5章理解請求和回響113
    5.1request對象和生命周期113
    5.1.1什麼是request對象113
    5.1.2請求的生命周期115
    5.1.3擴展點118
    5.1.4應該使用哪個擴展點?121
    5.2reply接口和response對象121
    5.2.1什麼是reply接口?121
    5.2.2reply()的有效參數123
    XVII
    目錄
    5.2.3response對象124
    5.2.4使用流來回響126
    5.3處理錯誤128
    5.3.1程式設計師錯誤和操作錯誤129
    5.3.2HTTP狀態碼129
    5.3.3介紹Boom:創建HTTP
    友好的錯誤131
    5.3.4網站友好的HTML錯誤
    頁面132
    5.4小結136
    第6章使用Joi驗證139
    6.1介紹Joi140
    6.1.1Joi的工作方式140
    6.1.2一個簡單例子:驗證標量
    類型141
    6.1.3一個更複雜的例子:驗證一個
    複合類型142
    6.2掌握Joi144
    6.2.1了解API145
    6.2.2Joi.assert()和Joi.validate()146
    6.2.3Joi中的類型轉換146
    6.2.4abortEarly選項147
    6.2.5探索Joi錯誤148
    6.3hapi中的驗證150
    6.3.1使用Joi進行輸入驗證150
    6.3.2驗證payload152
    6.3.3驗證回響155
    6.3.4使用failAction自定義驗證
    回響156
    6.4整合:使用hapi和Joi進行Web
    表單驗證157
    6.4.1如何工作158
    6.4.2創建骨架159
    6.4.3創建路由和視圖160
    6.4.4添加驗證163
    6.4.5在表單中渲染錯誤165
    6.4.6表單提交成功後的重定向167
    6.5小結168
    第7章使用外掛程式構建模組化套用169
    7.1外掛程式思想169
    7.1.1外掛程式的定義171
    7.1.2外掛程式的作用172
    7.1.3把所有東西放進外掛程式174
    7.1.4Pingoo套用174
    7.2創建和載入外掛程式176
    7.2.1創建外掛程式176
    7.2.2使用server.register()載入
    外掛程式179
    7.2.3外掛程式依賴180
    7.2.4使用選項配置外掛程式182
    7.3使用Glue組合外掛程式186
    7.3.1什麼是Glue?186
    7.3.2創建一個清單187
    7.3.3使用Confidence工具實現智
    能配置190
    7.4外掛程式通信193
    7.4.1全局的伺服器配置193
    7.4.2通過server.expose()在外掛程式中
    對外公開屬性195
    7.4.3使用事件系統196
    7.5小結200
    第8章充分利用快取201
    8.1客戶端快取202
    8.1.1手動設定header203
    8.1.2在配置中設定快取策略203
    8.1.3重新驗證和ETag204
    8.2介紹Catbox:一個多策略的對象
    快取庫207
    8.2.1什麼是Catbox208
    XVIIIhapi.js實戰
    8.2.2Catbox客戶端和策略211
    8.2.3Staleness213
    8.2.4應該用哪個快取策略?215
    8.3hapi套用中的伺服器端快取216
    8.3.1配置客戶端216
    8.3.2使用server.cache()創建並使用
    Catbox策略217
    8.3.3快取伺服器方法219
    8.3.4使用鍵、分區和段來組織快取
    數據220
    8.4小結222
    第Ⅲ部分創建健壯的套用
    第9章身份驗證和安全225
    9.1關於身份驗證的深度探討225
    9.1.1hapi身份驗證概述226
    9.1.2應該選擇哪種身份驗證
    模式228
    9.1.3身份驗證的scope228
    9.1.4身份驗證模式229
    9.2通過Bell實現第三方身份
    驗證231
    9.2.1什麼是第三方身份驗證231
    9.2.2Bell簡介232
    9.2.3將Bell整合進hapi套用233
    9.3通過CORS管理跨域請求240
    9.3.1允許來自任何地方的跨域
    請求241
    9.3.2隻接受指定源的訪問243
    9.3.3處理自定義的header244
    9.3.4CORS和憑據(Cookie)246
    9.3.5CORS設定的粒度247
    9.4使用Crumb保護套用免受CSRF
    攻擊248
    9.4.1通過CSRF令牌對抗CSRF
    攻擊249
    9.4.2通過創建自己的漏洞來理解
    CSRF250
    9.4.3通過Crumb保護HTML253
    9.4.4使用Crumb保護restful
    API254
    9.5安全相關的header255
    9.6小結257
    第10章使用Lab、Code和server.inject()
    進行測試259
    10.1Lab簡介259
    10.1.1第一個測試260
    10.1.2Lab作為本地依賴261
    10.1.3通過experiments組織
    測試262
    10.1.4默認異步執行263
    10.1.5Lab的語法糖264
    10.2用Code斷言庫製作斷言265
    10.2.1什麼是Code斷言庫265
    10.2.2Code的語法:斷言語句的
    結構267
    10.3使用server.inject()測試hapi
    服務269
    10.3.1為測試準備server270
    10.3.2server.inject()的回響
    參數272
    10.3.3使用requestpayload進行
    測試272
    10.3.4測試需要驗證的路由274
    10.4Lab進階276
    10.4.1reporter276
    10.4.2代碼覆蓋率278
    10.4.3linting278
    10.4.4全局變數泄露279
    目錄XIX
    10.4.5並行執行測試279
    10.5使用stub、spies和monkey-patching
    測試難以測試的代碼281
    10.5.1monkey-patching介紹281
    10.5.2使用Sinon的Spy和stub284
    10.5.3使用proxyquire286
    10.6小結288
    第11章投入生產環境及更多相關
    內容291
    11.1hapi的日誌記錄和Good291
    11.1.1hapi中的伺服器事件291
    11.1.2通過request.log()和
    server.log()記錄日誌293
    11.1.3通過Good記錄線上日誌和
    處理監控296
    11.1.4使用多種reporter實例297
    11.2為路由生成文檔298
    11.2.1路由的tags、notes和
    descriptions299
    11.2.2通過Lout自動生成的
    文檔299
    11.3監控302
    11.3.1Graphite和StatsD302
    11.3.2通過StatsD度量任何指標303
    11.3.3使用Oppsy獲取hapi的操作
    數據304
    11.4調試307
    11.4.1不要認為使用console.log()
    不好307
    11.4.2Nodedebug307
    11.4.3NodeInspector309
    11.4.4通過Poop進行Core
    dumps310
    11.4.5使用hapiTV調試實時
    請求312
    11.5部署支持SSL/TLS的套用314
    11.5.1TLS的配置項314
    11.5.2在hapi中配置TLS連線315
    11.5.3使用self-signed憑據測試
    SSL315
    11.5.4強制HTTPS317
    11.6小結319
    附錄ANode.js和npm入門321
    附錄B本書用到的npm包327

    相關詞條

    熱門詞條

    聯絡我們