RESTful Web Services Cookbook中文版(REST最佳實踐手冊)(簡體書)
商品資訊
ISBN13:9787121143908
出版社:電子工業出版社
作者:(美)沙布.阿拉馬拉尤(SUBBU ALLAMARAJU)
出版日:2011/09/01
裝訂/頁數:平裝/299頁
人民幣定價:59 元
定價
:NT$ 354 元優惠價
:
87 折 308 元
絕版無法訂購
商品簡介
作者簡介
名人/編輯推薦
目次
書摘/試閱
商品簡介
《RESTful Web Services Cookbook(中文版)》從實踐出發,涉及設計restful web服務的各個方面,通過問題描述、解決方案、問題討論的形式在14個章節中詳細討論了統一接口、資源、表述、uri、鏈接、請求、緩存、安全等諸多內容。無論讀者是否設計過restful web服務,具體使用哪種語言,都能在閱讀過程中有所收獲。《RESTful Web Services Cookbook(中文版)》也可作為手冊,根據具體問題描述在書中查找解決辦法。
作者簡介
作者:(美國)阿拉馬拉尤 (Subbu Allamaraju) 譯者:丁雪豐 常可 合著者:李錕
名人/編輯推薦
REST設計哲學激起了Web與企業應用開發者的無盡遐想,但用這種方式來開發真正的Web服務并非易事。《RESTful Web Services Cookbook(中文版)》包含了超過100個技巧。幫助您充分利用REST,HTTP和Web基礎設施。無論使用何種編程語言和開發框架,您都將了解到如何為客戶端/服務器應用設計滿足性能、可擴展性、可靠性及安全目標的。RESTful Web服務。
《RESTful Web Services Cookbook(中文版)》的每一節都包含一到兩個問題描述,帶有簡單易學、步驟詳盡的解決方案,還有使用HTTP請求與響應、XML、JSON和Atom片段的例子。您還將看到針對每個解決方案的實現指南,討論其中的利弊和權衡。
了解如何設計滿足多種應用場景的資源,成功設計表述與URI,使用鏈接與鏈接標頭來實現超文本約束,理解何時及如何使用Atom和AtomPub,為了支持緩存,該做什么,不該做什么,了解如何實現并發控制,處理涉及復制、合并、事務、批處理及部分更新的高級用例,保護Web服務,支持OAuth。
Subbu Allamaraju,Yahoo!架構師。他設計了RESTful web服務的標準及實踐,目前負責開發者平臺的架構工作。Subbu之前就職于BEA System,Inc..開發Web服務及基于Java的軟件。他參與了4本J2EE~H關書籍的編寫,均由Wrox發行出版。
《RESTful Web Services Cookbook(中文版)》的每一節都包含一到兩個問題描述,帶有簡單易學、步驟詳盡的解決方案,還有使用HTTP請求與響應、XML、JSON和Atom片段的例子。您還將看到針對每個解決方案的實現指南,討論其中的利弊和權衡。
了解如何設計滿足多種應用場景的資源,成功設計表述與URI,使用鏈接與鏈接標頭來實現超文本約束,理解何時及如何使用Atom和AtomPub,為了支持緩存,該做什么,不該做什么,了解如何實現并發控制,處理涉及復制、合并、事務、批處理及部分更新的高級用例,保護Web服務,支持OAuth。
Subbu Allamaraju,Yahoo!架構師。他設計了RESTful web服務的標準及實踐,目前負責開發者平臺的架構工作。Subbu之前就職于BEA System,Inc..開發Web服務及基于Java的軟件。他參與了4本J2EE~H關書籍的編寫,均由Wrox發行出版。
目次
目錄
前言
第1章 使用統一接口 1
1.1 如何保持交互的可見性 2
1.2 何時需要權衡可見性 4
1.3 如何維護應用程序狀態 6
1.4 如何在服務器端實現安全和冪等的方法 9
1.5 如何在客戶端處理安全和冪等方法 12
1.6 何時使用GET方法 13
1.7 何時使用POST方法 15
1.8 如何使用POST方法創建資源 17
1.9 何時使用PUT方法創建新資源 19
1.1 0如何使用POST方法實現異步任務 20
1.1 1如何使用DELETE方法實現異步刪除 23
1.1 2何時使用自定義HTTP方法 24
1.1 3何時及如何使用自定義HTTP標頭 26
第2章 識別資源 29
2.1 如何從領域名詞中識別資源 30
2.2 如何選擇資源粒度 31
2.3 如何將資源組織為集合 32
2.4 何時將資源合并為復合資源 35
2.5 如何支持計算或處理函數 37
2.6 何時及如何使用控制器來操作資源 40
第3章 設計表述 45
3.1 如何使用實體頭來注解表述 46
3.2 如何解釋實體頭 50
3.3 如何避免字符編碼不匹配 51
3.4 如何選擇表述格式和媒體類型 52
3.5 如何設計XML表述 56
3.6 如何設計JSON表述 58
3.7 如何設計集合表述 59
3.8 如何保持同構的集合 61
3.9 如何在表述中使用可移植的數據格式 63
3.1 0何時使用實體標識符 65
3.1 1如何在表述中編碼二進制數據 66
3.1 2何時以及如何提供HTML表述 68
3.1 3如何返回錯誤 70
3.1 4如何在客戶端處理錯誤 74
第4章 設計URI 77
4.1 如何設計URI 77
4.2 如何將URI用做模糊標識符 81
4.3 如何讓客戶端將URI視為模糊標識符 83
4.4 如何保持酷的URI 85
第5章Web鏈接 88
5.1 如何在XML表述中使用鏈接 89
5.2 如何在JSON表述中使用鏈接 92
5.3 何時以及如何使用鏈接標頭 93
5.4 如何分配鏈接關系類型 94
5.5 如何使用鏈接來管理應用程序的流程 97
5.6 如何處理臨時URI 101
5.7 何時以及如何使用URI模板 103
5.8 如何在客戶端使用鏈接 105
第6章 Atom和AtomPub 108
6.1 如何利用Atom建模資源 109
6.2 何時使用Atom 113
6.3 如何使用AtomPub服務和分類文件 117
6.4 如何針對Feed和Entry資源使用AtomPub 119
6.5 如何使用媒體資源 122
第7章 內容協商 125
7.1 如何標明客戶端偏好 126
7.2 如何實現媒體類型協商 128
7.3 如何實現語言協商 129
7.4 如何實現字符編碼協商 131
7.5 如何支持壓縮 132
7.6 何時以及如何發送Vary頭 133
7.7 如何處理協商失敗 134
7.8 如何使用代理驅動的內容協商 136
7.9 何時支持服務器驅動的協商 137
第8章 查詢 139
8.1 如何針對查詢設計URI 139
8.2 如何設計查詢響應 142
8.3 如何支持有大量輸入的查詢請求 144
8.4 如何存儲查詢 146
第9章 Web緩存 149
9.1 如何設置過期緩存頭 150
9.2 何時設置過期緩存頭 153
9.3 何時以及如何在客戶端中使用過期緩存頭 156
9.4 如何支持復合資源的緩存 157
9.5 如何保持新鮮且溫暖的緩存 158
第10 章條件請求 161
10.1 如何生成Last-Modified和ETag頭 163
10.2 如何在服務器端實現條件GET請求 164
10.3 如何從客戶端提交條件GET和HEAD請求 167
10.4 如何在服務器端實現條件PUT請求 169
10.5 如何在服務器端實現條件DELETE請求 173
10.6 如何從客戶端發起無條件GET請求 175
10.7 如何從客戶端提交條件PUT和DELETE請求 176
10.8 如何使POST請求條件化 178
10.9 如何生成一次性URI 181
第11章 其他內容 184
11.1 如何復制資源 185
11.2 如何合并資源 187
11.3 如何移動資源 189
11.4 何時使用WebDAV方法 191
11.5 如何支持跨服務器的操作 193
11.6 如何獲取資源的快照 195
11.7 如何撤銷資源更新 198
11.8 如何為部分更新提煉資源 200
11.9 如何使用PATCH方法 203
11.1 0如何批量處理相似的資源 206
11.1 1如何觸發批量操作 209
11.1 2何時使用POST來合并多個請求 211
11.1 3如何支持批量請求 215
11.1 4如何支持事務 217
第12章 安全 220
12.1 如何使用基本身份驗證來驗證客戶端 221
12.2 如何使用摘要身份驗證來驗證客戶端 224
12.3 如何使用三方OAuth 226
12.4 如何使用兩方OAuth 232
12.5 如何處理URI中的敏感信息 235
12.6 如何維護表述的機密性與完整性 237
第13章 可擴展性與版本控制 239
13.1 如何維持URI的兼容性 240
13.2 如何維持XML和JSON表述的兼容性 242
13.3 如何擴展Atom 245
13.4 如何維持鏈接的兼容性 249
13.5 如何實現支持可擴展性的客戶端 250
13.6 何時需要版本化 251
13.7 如何版本化RESTfulWeb服務 252
第14章 服務發現 256
14.1 如何編寫RESTfulWeb服務的文檔 256
14.2 如何使用OPTIONS 259
附錄A 輔助讀物 261
附錄B REST概述 265
附錄C HTTP方法 268
附錄D AtomSyndicationFormat 273
附錄E 鏈接關系類型 279
索引 287
前言
第1章 使用統一接口 1
1.1 如何保持交互的可見性 2
1.2 何時需要權衡可見性 4
1.3 如何維護應用程序狀態 6
1.4 如何在服務器端實現安全和冪等的方法 9
1.5 如何在客戶端處理安全和冪等方法 12
1.6 何時使用GET方法 13
1.7 何時使用POST方法 15
1.8 如何使用POST方法創建資源 17
1.9 何時使用PUT方法創建新資源 19
1.1 0如何使用POST方法實現異步任務 20
1.1 1如何使用DELETE方法實現異步刪除 23
1.1 2何時使用自定義HTTP方法 24
1.1 3何時及如何使用自定義HTTP標頭 26
第2章 識別資源 29
2.1 如何從領域名詞中識別資源 30
2.2 如何選擇資源粒度 31
2.3 如何將資源組織為集合 32
2.4 何時將資源合并為復合資源 35
2.5 如何支持計算或處理函數 37
2.6 何時及如何使用控制器來操作資源 40
第3章 設計表述 45
3.1 如何使用實體頭來注解表述 46
3.2 如何解釋實體頭 50
3.3 如何避免字符編碼不匹配 51
3.4 如何選擇表述格式和媒體類型 52
3.5 如何設計XML表述 56
3.6 如何設計JSON表述 58
3.7 如何設計集合表述 59
3.8 如何保持同構的集合 61
3.9 如何在表述中使用可移植的數據格式 63
3.1 0何時使用實體標識符 65
3.1 1如何在表述中編碼二進制數據 66
3.1 2何時以及如何提供HTML表述 68
3.1 3如何返回錯誤 70
3.1 4如何在客戶端處理錯誤 74
第4章 設計URI 77
4.1 如何設計URI 77
4.2 如何將URI用做模糊標識符 81
4.3 如何讓客戶端將URI視為模糊標識符 83
4.4 如何保持酷的URI 85
第5章Web鏈接 88
5.1 如何在XML表述中使用鏈接 89
5.2 如何在JSON表述中使用鏈接 92
5.3 何時以及如何使用鏈接標頭 93
5.4 如何分配鏈接關系類型 94
5.5 如何使用鏈接來管理應用程序的流程 97
5.6 如何處理臨時URI 101
5.7 何時以及如何使用URI模板 103
5.8 如何在客戶端使用鏈接 105
第6章 Atom和AtomPub 108
6.1 如何利用Atom建模資源 109
6.2 何時使用Atom 113
6.3 如何使用AtomPub服務和分類文件 117
6.4 如何針對Feed和Entry資源使用AtomPub 119
6.5 如何使用媒體資源 122
第7章 內容協商 125
7.1 如何標明客戶端偏好 126
7.2 如何實現媒體類型協商 128
7.3 如何實現語言協商 129
7.4 如何實現字符編碼協商 131
7.5 如何支持壓縮 132
7.6 何時以及如何發送Vary頭 133
7.7 如何處理協商失敗 134
7.8 如何使用代理驅動的內容協商 136
7.9 何時支持服務器驅動的協商 137
第8章 查詢 139
8.1 如何針對查詢設計URI 139
8.2 如何設計查詢響應 142
8.3 如何支持有大量輸入的查詢請求 144
8.4 如何存儲查詢 146
第9章 Web緩存 149
9.1 如何設置過期緩存頭 150
9.2 何時設置過期緩存頭 153
9.3 何時以及如何在客戶端中使用過期緩存頭 156
9.4 如何支持復合資源的緩存 157
9.5 如何保持新鮮且溫暖的緩存 158
第10 章條件請求 161
10.1 如何生成Last-Modified和ETag頭 163
10.2 如何在服務器端實現條件GET請求 164
10.3 如何從客戶端提交條件GET和HEAD請求 167
10.4 如何在服務器端實現條件PUT請求 169
10.5 如何在服務器端實現條件DELETE請求 173
10.6 如何從客戶端發起無條件GET請求 175
10.7 如何從客戶端提交條件PUT和DELETE請求 176
10.8 如何使POST請求條件化 178
10.9 如何生成一次性URI 181
第11章 其他內容 184
11.1 如何復制資源 185
11.2 如何合并資源 187
11.3 如何移動資源 189
11.4 何時使用WebDAV方法 191
11.5 如何支持跨服務器的操作 193
11.6 如何獲取資源的快照 195
11.7 如何撤銷資源更新 198
11.8 如何為部分更新提煉資源 200
11.9 如何使用PATCH方法 203
11.1 0如何批量處理相似的資源 206
11.1 1如何觸發批量操作 209
11.1 2何時使用POST來合并多個請求 211
11.1 3如何支持批量請求 215
11.1 4如何支持事務 217
第12章 安全 220
12.1 如何使用基本身份驗證來驗證客戶端 221
12.2 如何使用摘要身份驗證來驗證客戶端 224
12.3 如何使用三方OAuth 226
12.4 如何使用兩方OAuth 232
12.5 如何處理URI中的敏感信息 235
12.6 如何維護表述的機密性與完整性 237
第13章 可擴展性與版本控制 239
13.1 如何維持URI的兼容性 240
13.2 如何維持XML和JSON表述的兼容性 242
13.3 如何擴展Atom 245
13.4 如何維持鏈接的兼容性 249
13.5 如何實現支持可擴展性的客戶端 250
13.6 何時需要版本化 251
13.7 如何版本化RESTfulWeb服務 252
第14章 服務發現 256
14.1 如何編寫RESTfulWeb服務的文檔 256
14.2 如何使用OPTIONS 259
附錄A 輔助讀物 261
附錄B REST概述 265
附錄C HTTP方法 268
附錄D AtomSyndicationFormat 273
附錄E 鏈接關系類型 279
索引 287
書摘/試閱
在任何分布式的客戶端/服務器環境中管理變更都是很困難的。在這樣的環境中,客戶端依賴于服務器能履行自己的承諾。RESFlul Web服務也不例外,對它們而言,這包括uRI、資源、結構體和表述的內容、它們的格式,以及每個資源的HTTP方法。直到您開始考慮向後兼容性(backward compatibility)之後,對服務器的變更好像都成了有益的了。變化是向後兼容的,在修改服務器時就無須升級客戶端。客戶端會忽略您升級了服務器這一事實,繼續按原有方式進行調用,就好像什么變化都沒發生過一樣,當然這不包括服務器升級期間的不可用時間。還有一種兼容性被稱為向前兼容性(forward compatibility),當有多個客戶端和服務器在不同時間點升級時,這一點是很重要的。在這種情況下,較新的客戶端可能會與老的服務器進行交互。向前兼容性的目的是保證較新的客戶端能繼續使用老的服務器,雖然功能有所減少,但不會出現問題。您的應用程序中僅需要考慮向後兼容性,還是需要同時考慮向後和向前兼容性取決于您的操作環境。本章描述的內容能幫助您處理好這兩種兼容性。讓您能夠保持兼容性的特性是可擴展性,這是為未來的變化預留余地的設計過程。
主題書展
更多
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

