關于我們
書單推薦
新書推薦
|
RESTful Web Clients:基于超媒體的可復用客戶端 讀者對象:web及客戶端的學習者和開發(fā)人員
Web開發(fā)領域的REST運動已經進行了很多年了,在REST的Richardson成熟度模型提出后,第3級——HATEOAS的應用——仍然沒有得到廣泛應用。事實上,其中一個難點在于客戶端如何支持HATEOAS。之前很多REST相關書籍聚焦于如何打造服務端的RESTful API,本書則著重研究RESTful客戶端,介紹了如何把一個針對服務端規(guī)約硬編碼的定制客戶端重構為一個支持HATEOAS的通用客戶端,并提供了多格式支持、超媒體類型、版本化、微服務等相關問題的全面指導。本書附有所有樣例代碼的GitHub地址,方便讀者快速理解和實踐。本書適合Web應用開發(fā)者,尤其適合希望Web應用程序的服務端與客戶端能夠獨立演化的Web架構師。
作為國際知名的作家和演說家,Mike Amundsen在全球各地咨詢和研討網絡架構、Web開發(fā)和其他議題。而作為CA Technologies API學院的架構總監(jiān),他與公司致力于提供Web API方面的洞見,以便可以最大限度地利用面向消費者和企業(yè)的Web API的機會。
曾著,畢業(yè)于北京大學,互愛(北京)科技股份有限公司技術副總裁。徐必濤,霓風網絡科技有限公司軟件架構師,曾任ThoughtWorks高級軟件工程師、DevOps咨詢師。
前言 ............................................................................................ xx
開場:嗯,那是一次有趣的旅行,不是嗎 .................................. xxviii
Bob、Carol 和BigCo 公司 ......................................................... xxx
第1 章 從HTML 到簡單Web API .................................................1
任務處理系統(tǒng)(TPS)Web 應用 ...........................................................................4
來自服務器的HTML ......................................................................................5
將通用Web 瀏覽器作為客戶端 ......................................................................9
評價 .................................................................................................................9
Task 服務Web API ...............................................................................................10
Web API 的常規(guī)實踐 .....................................................................................10
設計TPS Web API......................................................................................... 11
實現(xiàn)TPS Web API.........................................................................................18
評價 ...............................................................................................................24
總結 .....................................................................................................................25
參考資料 ..............................................................................................................26
第2 章 JSON 客戶端 ..................................................................29
JSON Web API 客戶端 .........................................................................................30
Objects ..........................................................................................................31
Addresses ......................................................................................................34
Actions ..........................................................................................................35
小結 ...............................................................................................................38
JSON 單頁面客戶端.............................................................................................38
HTML 容器 ...................................................................................................38
頂層解析循環(huán) ................................................................................................40
Objects、Addresses 和Actions .....................................................................41
小結 ...............................................................................................................47
應對變化 ..............................................................................................................47
添加字段和過濾器 ........................................................................................48
編寫一個新客戶端 ...............................................................................................52
總結 .....................................................................................................................54
參考資料 ..............................................................................................................57
第3 章 表述器模式 .....................................................................59
XML 還是JSON :選一個吧................................................................................62
新的分支:超媒體格式 .................................................................................63
“唯一正確”的謬誤 ......................................................................................65
重建(reframe)問題 ....................................................................................66
表述器(Representor)模式 ................................................................................68
從功能中分離格式 ........................................................................................69
選擇算法 .......................................................................................................69
適配和翻譯 ...................................................................................................71
服務端模型 ..........................................................................................................74
處理HTTP Accept 頭部參數 .........................................................................74
實現(xiàn)消息翻譯器模式 .....................................................................................74
通用表述器模塊 ............................................................................................76
WeSTL 格式 ..................................................................................................76
表述器的范例 ................................................................................................81
總結 .....................................................................................................................84
參考資料 ..............................................................................................................86
第4 章 HAL 客戶端 .....................................................................89
HAL 格式 .............................................................................................................91
Links .............................................................................................................93
Objects 和Properties .....................................................................................94
內嵌Links 和Objects ....................................................................................95
小結 ...............................................................................................................97
HAL 表述器 .........................................................................................................97
Links .............................................................................................................98
Properties ......................................................................................................99
內嵌內容 ..................................................................................................... 100
HAL 表述器構建TPS 輸出示例 .................................................................. 102
HAL SPA 客戶端................................................................................................ 104
HTML 容器 ................................................................................................. 105
頂層解析循環(huán) .............................................................................................. 106
Links ........................................................................................................... 107
內嵌內容 ..................................................................................................... 109
Properties .................................................................................................... 113
為HAL 處理Action .................................................................................... 114
小結 ............................................................................................................. 116
應對變化 ............................................................................................................ 117
添加ACTION ............................................................................................. 117
HAL-FORMS 擴展 ............................................................................................. 121
規(guī)范 ............................................................................................................. 121
請求HAL-FORMS 文檔 .............................................................................. 123
實現(xiàn) ............................................................................................................. 124
總結 ................................................................................................................... 125
參考資料 ............................................................................................................ 128
第5 章 可重用客戶端應用的挑戰(zhàn) ...............................................131
你在解決什么問題 ............................................................................................. 133
設計的雙鉆石模型 ...................................................................................... 134
閉合方案 vs. 開放方案 ................................................................................ 134
交互建模 ............................................................................................................ 136
Maldonado 的機制 ....................................................................................... 137
Verplank 的人類視角 ................................................................................... 139
超媒體交互循環(huán) ................................................................................................. 141
RPW 循環(huán) .................................................................................................... 141
用代碼實現(xiàn)RPW......................................................................................... 143
處理Verplank 的KNOW 步驟 .................................................................... 144
總結 ................................................................................................................... 148
參考資料 ............................................................................................................ 150
第6 章 Siren 客戶端 .................................................................153
Siren 格式 .......................................................................................................... 155
Entities ........................................................................................................ 157
Class ............................................................................................................ 158
Properties .................................................................................................... 158
Links ........................................................................................................... 159
Actions ........................................................................................................ 159
SubEntities .................................................................................................. 160
小結 ............................................................................................................. 162
Siren 表述器 ....................................................................................................... 162
頂層循環(huán) ..................................................................................................... 163
Class ............................................................................................................ 164
Properties .................................................................................................... 164
Entities ........................................................................................................ 165
Actions ........................................................................................................ 166
Links ........................................................................................................... 168
TPS 通過Siren 表述器輸出示例 ................................................................. 169
Siren SPA 客戶端 ............................................................................................... 172
HTML 容器 ................................................................................................. 173
頂層解析循環(huán) .............................................................................................. 173
Links ........................................................................................................... 174
Entities ........................................................................................................ 176
Properties .................................................................................................... 178
Actions ........................................................................................................ 181
小結 ............................................................................................................. 184
應對變化 ............................................................................................................ 184
添加郵箱字段和過濾器 ............................................................................... 185
測試郵箱字段 .............................................................................................. 187
Profile 對象描述(POD)擴展 .......................................................................... 190
POD 規(guī)范 .................................................................................................... 191
實現(xiàn) ............................................................................................................. 192
在Siren 中使用POD 展示對象 ................................................................... 194
小結 ............................................................................................................. 195
總結 ................................................................................................................... 196
參考資料 ............................................................................................................ 198
第7 章 版本化與Web ...............................................................199
互聯(lián)網中的版本化 ............................................................................................. 201
TCP/IP 的健壯性原則 ................................................................................. 202
HTTP 中的MUST IGNORE ........................................................................ 203
HTML 的向后兼容性 .................................................................................. 205
非破壞性變更指南 ............................................................................................. 206
API 設計者 .................................................................................................. 206
服務端實現(xiàn)者 .............................................................................................. 209
客戶端實現(xiàn)者 .............................................................................................. 215
總結 ................................................................................................................... 223
參考資料 ............................................................................................................ 225
第8 章 Collection+JSON 客戶端 ...............................................227
Collection+JSON 格式 ....................................................................................... 229
Links ........................................................................................................... 232
Items ............................................................................................................ 233
Queries ........................................................................................................ 234
Template ...................................................................................................... 235
Error ............................................................................................................ 237
小結 ............................................................................................................. 237
xviii | 目錄
Collection+JSON 表述器 ................................................................................... 238
頂層處理循環(huán) .............................................................................................. 238
Links ........................................................................................................... 239
Items ............................................................................................................ 240
Queries ........................................................................................................ 243
Template ...................................................................................................... 244
Error ............................................................................................................ 245
Collection+JSON SPA 客戶端 ............................................................................ 246
HTML 容器 ................................................................................................. 246
頂層解析循環(huán) .............................................................................................. 248
Links ........................................................................................................... 249
Items ............................................................................................................ 250
Queries ........................................................................................................ 253
Template ...................................................................................................... 255
Error ............................................................................................................ 257
小結 ............................................................................................................. 258
處理變更 ............................................................................................................ 258
在TPS API 中添加Note 對象 ..................................................................... 259
Cj 和OAA 挑戰(zhàn) .......................................................................................... 265
小結 ............................................................................................................. 266
擴展Collection+JSON ....................................................................................... 266
用Cj-Types 支持改善的輸入 ...................................................................... 267
Cj-Suggest 擴展 ........................................................................................... 271
小結 ............................................................................................................. 275
總結 ................................................................................................................... 275
參考資料 ............................................................................................................ 279
第9 章 超媒體與微服務 ...........................................................281
UNIX 哲學 ......................................................................................................... 284
BigCo 的TPS 微服務 ......................................................................................... 285
Task 服務與Collection + JSON ......................................................................... 286
User 服務與Siren ........................................................................................ 290
Note 服務與HAL ........................................................................................ 293
一個客戶端,統(tǒng)領全局 ...................................................................................... 296
Home 服務................................................................................................... 297
多格式客戶端SPA 容器 .............................................................................. 298
可以切換格式的客戶端UI .......................................................................... 301
總結 ................................................................................................................... 308
參考資料 ............................................................................................................ 312
結語:擁抱你的未來 ..................................................................313
附錄A 項目清單 ......................................................................315
附錄B 工具與資源 ..................................................................319
你還可能感興趣
我要評論
|