Web API的設計與開發

Web API的設計與開發 pdf epub mobi txt 電子書 下載 2025

水野貴明 著,盛榮 譯
圖書標籤:
  • Web API
  • RESTful
  • API設計
  • API開發
  • 微服務
  • HTTP
  • JSON
  • 前後端分離
  • 軟件架構
  • Web開發
想要找書就要到 靜思書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 人民郵電齣版社
ISBN:9787115455338
版次:01
商品編碼:12097361
包裝:平裝
叢書名: 圖靈程序設計叢書
開本:16開
齣版時間:2017-05-01
頁數:212
正文語種:中文

具體描述

編輯推薦

1.Web API設計、開發與運維zui佳實踐!
2.實例豐富,分析瞭美國各大知名網站的API設計細節。
3.內容詳實,易於理解,Web API新手bi備!

API如果設計得不好,不僅會很難用,而且公開之後的運維也很睏難,因此設計優美的API非常重要。本書認為“設計優美的API易於使用、便於更改、健壯性好、不怕公之於眾”,並基於這一觀點詳細闡述瞭如何有效地設計、開發和運維API、如何避免容易掉入的陷阱等。目標是設計齣訪問URI後返迴XML或JSON等數據的簡潔的API,即XML over HTTP方式或JSON over HTTP方式的API。

內容簡介

本書結閤豐富的實例,詳細講解瞭Web API的設計、開發與運維相關的知識。第1章介紹Web API的概要;第2章詳述端點的設計與請求的形式;第3章介紹響應數據的設計;第4章介紹如何充分利用HTTP協議規範;第5章介紹如何開發方便更改設計的Web API;第6章介紹如何開發牢固的Web API。

作者簡介

水野貴明(作者)
1973年齣生於東京。自由軟件開發者兼技術書作譯者。是JavaScript:The Good Parts、Third-Party JavaScript、 High Performance JavaScript、The Principles of Object-Oriented JavaScript等圖書的日文版譯者,著有《Web應用程序測試方法》(閤著)。

盛榮(譯者)
曾就職於愛立信、Autodesk等公司,長期從事軟件、互聯網技術相關領域的研發、測試等工作。熱愛技術,對IT相關的新聞、曆史等有濃厚興趣。

目錄

目 錄

譯者序 xi

前言 xv

第1章 什麼是Web API 1
1.1 Web API的重要性 3
1.1.1 通過API纔能使用的在綫服務齣現 5
1.1.2 移動應用與API 7
1.1.3 API的經濟學 7
1.2 各種各樣的API模式 8
1.2.1 將已發布的Web在綫服務的數據或功能通過API公開 8
1.2.2 將附加在其他網頁上的微件公開 9
1.2.3 構建現代Web應用 10
1.2.4 開發智能手機應用 11
1.2.5 開發社交遊戲 11
1.2.6 公司內部多個係統的集成 12
1.3 應該通過API公開什麼 12
1.3.1 公開API是否會帶來風險 13
1.3.2 公開API能得到什麼 14
1.4 設計優美的Web API的重要性 15
1.4.1 設計優美的Web API易於使用 15
1.4.2 設計優美的Web API便於更改 16
1.4.3 設計優美的Web API健壯性好 16
1.4.4 設計優美的Web API不怕公之於眾 16
1.5 如何美化Web API 17
1.6 REST與Web API 18
1.7 作為目標對象的開發人員數量與API的設計思想 19
1.8 小結 20

第2章 端點的設計與請求的形式 21
2.1 設計通過API公開的功能 21
2.2 API端點的設計思想 24
2.3 HTTP方法和端點 31
2.3.1 GET方法 32
2.3.2 POST方法 33
2.3.3 PUT方法 33
2.3.4 DELETE方法 34
2.3.5 PATCH方法 35
2.4 API端點的設計 37
2.4.1 訪問資源的端點設計的注意事項 41
2.4.2 注意所用的單詞 43
2.4.3 不使用空格及需要編碼的字符 43
2.4.4 使用連接符來連接多個單詞 44
2.5 搜索與查詢參數的設計 45
2.5.1 獲取數據量和獲取位置的查詢參數 46
2.5.2 使用相對位置存在的問題 47
2.5.3 使用絕對位置來獲取數據 48
2.5.4 用於過濾的參數 49
2.5.5 查詢參數和路徑的使用區彆 52
2.6 登錄與OAuth 2.0 53
2.6.1 access token的有效期和更新 58
2.6.2 其他Grant Type 59
2.7 主機名和端點的共有部分 61
2.8 SSKDs與API的設計 63
2.9 HATEOAS和REST LEVEL3 API 64
2.9.1 REST LEVEL3 API的優點 67
2.9.2 REST LEVEL3 API 67
2.10 小結 68

第3章 響應數據的設計 69
3.1 數據格式 69
3.2 使用JSONP 74
3.2.1 支持JSONP的操作方法 75
3.2.2 JSONP與錯誤處理 77
3.3 數據內部結構的思考方法 79
3.3.1 讓用戶來選擇響應的內容 81
3.3.2 封裝是否必要 82
3.3.3 數據是否應該扁平化 83
3.3.4 序列與格式 85
3.3.5 該如何返迴序列的個數以及是否還有後續數據 88
3.4 各個數據的格式 90
3.4.1 各個數據的名稱 90
3.4.2 如何描述性彆數據 92
3.4.3 日期的格式 95
3.4.4 大整數與JSON 96
3.5 響應數據的設計 97
3.6 齣錯信息的錶示 98
3.6.1 通過狀態碼來錶示齣錯信息 98
3.6.2 嚮客戶端返迴詳細的齣錯信息 99
3.6.3 如何填寫詳細的齣錯信息 101
3.6.4 發生錯誤時防止返迴HTML 102
3.6.5 維護與狀態碼 102
3.6.6 需要返迴意義不明確的信息時 103
3.7 小結 104

第4章 最大程度地利用HTTP協議規範 105
4.1 使用HTTP協議規範的意義 105
4.2 正確使用狀態碼 107
4.2.1 2字頭狀態碼:成功 109
4.2.2 3字頭狀態碼:添加必要的處理 111
4.2.3 當客戶端請求發生問題時 113
4.2.4 5字頭狀態碼:當服務器端發生問題時 115
4.3 緩存與HTTP協議規範 116
4.3.1 過期模型 117
4.3.2 驗證模型 120
4.3.3 啓發式過期 122
4.3.4 不希望實施緩存的情況 123
4.3.5 使用Vary來指定緩存單位 123
4.3.6 Cache-Control首部 125
4.4 媒體類型的指定 127
4.4.1 使用Content-Type指定媒體類型的必要性 129
4.4.2 以x-開頭的媒體類型 130
4.4.3 自己定義媒體類型的情況 131
4.4.4 使用JSON或XML來定義新的數據格式的情況 132
4.4.5 媒體類型與安全性 133
4.4.6 請求數據與媒體類型 134
4.5 同源策略和跨域資源共享 136
4.5.1 CORS基本的交互 137
4.5.2 事先請求 138
4.5.3 CORS與用戶認證信息 139
4.6 定義私有的HTTP首部 139
4.7 小結 141


第5章 開發方便更改設計的Web API 143
5.1 方便更改設計的重要性 143
5.1.1 公開發布的API 144
5.1.2 麵嚮移動應用的API 145
5.1.3 Web服務中使用的API 145
5.2 通過版本信息來管理API 146
5.2.1 在URI中嵌入版本編號 147
5.2.2 如何添加版本編號 149
5.2.3 在查詢字符串裏加入版本信息 151
5.2.4 通過媒體類型來指定版本信息 152
5.2.5 應該采用什麼方法 153
5.3 版本變更的方針 153
5.4 終止提供API 155
5.4.1 案例學習:Twitter廢除舊版本的API 156
5.4.2 預先準備好停止服務時的規範 156
5.4.3 在使用條款中寫明支持期限 159
5.5 編排層 160
5.6 小結 162

第6章 開發牢固的Web API 163
6.1 讓Web API變得安全 163
6.2 非法獲取服務器端和客戶端之間的信息 165
6.2.1 用HTTPS對HTTP通信實施加密 165
6.2.2 使用HTTPS是否意味著100%安全 167
6.3 使用瀏覽器訪問API時的問題 169
6.3.1 XSS 169
6.3.2 XSRF 174
6.3.3 JSON劫持 176
6.4 思考防範惡意訪問的對策 180
6.4.1 篡改參數 181
6.4.2 請求再次發送 183
6.5 同安全相關的HTTP首部 185
6.5.1 X-Content-Type-Options 185
6.5.2 X-XSS-Protection 186
6.5.3 X-Frame-Options 186
6.5.4 Content-Security-Policy 187
6.5.5 Strict-Transport-Security 187
6.5.6 Public-Key-Pins 188
6.5.7 Set-Cookie首部和安全性 189
6.6 應對大規模訪問的對策 191
6.6.1 限製每個用戶的訪問 192
6.6.2 限速的單位 194
6.6.3 應對超齣上限值的情況 195
6.6.4 嚮用戶告知訪問限速的信息 198
6.7 小結 204

附錄A 公開Web API的準備工作 205
A.1 提供API文檔 205
A.2 提供沙盒API 206
A.3 API Console 207
A.4 提供SDK 209

附錄B Web API確認清單 211

精彩書摘

  《Web API的設計與開發》:
  例如,假設有一個在綫服務同時提供瞭麵嚮智能手機客戶端的API和麵嚮PC的Web站點。用戶通過注冊、登錄來使用該服務。該服務使用cookie來管理Web站點的會話信息。如果該服務在麵嚮智能手機客戶端的API裏也同樣使用cookie來進行會話信息的交互(在智能手機客戶端程序裏生成Cookie首部並發送),導緻會話信息被瀏覽器共享的話,那結果會如何呢?
  在這種情況下,即使我們沒有預設會通過瀏覽器來訪問API,實際上僅僅通過瀏覽器發送cookie信息這一操作,也能完成API的認證。當攻擊者在SCRIPT元素裏附加URI時,就有可能通過惡意網站來竊取或篡改機密信息等。
  因此,當無需通過瀏覽器來訪問API時,就要使用不同的會話管理方式,或者使用私有HTTP首部來識彆客戶端,或者使用下一節介紹的校驗和的方式等,來防範使用SCRIPT元素從瀏覽器訪問API導緻的安全問題。
  ……
穿越數字海洋的指南:探索互聯世界的奧秘 在這本穿越數字海洋的指南中,我們將踏上一段引人入勝的旅程,深入探索現代信息技術的核心——互聯世界的運作機製。這本書並非僅僅關注某一項具體的技術或工具,而是旨在構建一個宏觀的視角,幫助讀者理解信息如何在不同設備、不同係統、不同地理位置之間高效、安全、可靠地流動,從而驅動著我們今天所生活的這個高度數字化的社會。 我們首先會從最基礎的概念入手,解析“互聯”一詞的深層含義。它不僅僅是簡單的設備連接,更是數據、服務、信息和思想的無縫交互。我們將探討構成這個數字宇宙的基本元素:從微小的傳感器到龐大的數據中心,從智能手機到雲計算平颱,每一個節點都在扮演著不可或缺的角色。通過深入淺齣的講解,讀者將能清晰地描繪齣這個復雜網絡的全貌,理解不同組成部分是如何相互協作,共同構建起龐大而精密的數字生態係統。 接著,我們將聚焦於信息在網絡中流動的“語言”。在這裏,我們將潛入數據傳輸的底層,瞭解各種通信協議如何確保信息的準確無誤地抵達目的地。我們將詳細剖析TCP/IP協議族,這是互聯網的基石,理解它如何將龐大的數據切分成小塊(數據包),如何尋址、路由,以及如何在接收端重新組裝。我們將探索TCP的可靠性機製,理解它如何通過確認和重傳確保數據的完整性,以及UDP如何在速度和效率上做齣權衡,適用於實時通信等場景。此外,我們還將觸及更高級的網絡協議,例如DNS(域名係統),它如何將我們熟悉的域名翻譯成機器能夠理解的IP地址,以及HTTP(超文本傳輸協議),它是萬維網的基礎,如何實現客戶端與服務器之間的數據請求和響應。這本書將力求讓讀者在理解這些協議的同時,也能體會到設計這些協議的智慧和為瞭解決實際問題而付齣的努力。 然後,我們將把目光投嚮信息流動的“高速公路”——網絡基礎設施。我們將深入瞭解不同類型的網絡,從局域網(LAN)到廣域網(WAN),再到蜂窩網絡和無綫局域網。讀者將瞭解集綫器、交換機、路由器等網絡設備的原理,以及它們如何在不同網絡層級上發揮作用,實現數據的轉發和路由。我們將探討光縴通信的革命性影響,理解它如何極大地提升瞭數據傳輸的速度和帶寬,以及無綫通信技術的演進,從2G到5G,每一次的飛躍都為互聯世界的擴展提供瞭強大的動力。同時,我們也會討論網絡拓撲結構,例如星型、總綫型、環型等,並分析它們各自的優缺點,以及在實際應用中的選擇。 在信息高速流動的背後,安全始終是一個至關重要的問題。本書將投入大量篇幅來探討互聯世界的安全挑戰與應對策略。我們將深入剖析常見的網絡威脅,例如病毒、蠕蟲、木馬、拒絕服務攻擊(DDoS)以及釣魚攻擊等,並分析它們的工作原理和潛在危害。隨後,我們將詳細介紹各種安全防護技術,包括防火牆、入侵檢測/防禦係統(IDS/IPS)、虛擬專用網絡(VPN)以及加密技術。我們將講解對稱加密和非對稱加密的原理,以及數字證書和SSL/TLS等安全協議如何確保數據在傳輸過程中的機密性、完整性和身份驗證。此外,我們還將討論身份認證和訪問控製的重要性,以及如何通過強密碼策略、多因素認證等手段來增強賬戶的安全性。對於數據隱私,我們將探討其中的法律法規、倫理考量以及技術實現,幫助讀者認識到在享受互聯便利的同時,保護個人信息的重要性。 隨著數據量的爆炸式增長,如何有效地存儲、管理和利用這些數據成為瞭新的挑戰。本書將帶領讀者進入數據管理的領域,瞭解數據庫係統的演進和不同類型的數據庫。我們將介紹關係型數據庫(如MySQL、PostgreSQL)的結構和查詢語言(SQL),以及它們在企業級應用中的廣泛使用。同時,我們也將探討NoSQL數據庫(如MongoDB、Cassandra)的齣現,以及它們在處理大數據、非結構化數據以及分布式係統中的優勢。讀者將瞭解數據倉庫、數據湖等概念,以及它們在商業智能和數據分析中的作用。我們還會討論數據的備份、恢復以及災難恢復策略,確保數據的安全和可用性。 在現代互聯世界中,“服務”的概念無處不在。本書將深入探討服務的提供與消費模式。我們將從最基礎的客戶端-服務器模型開始,逐步過渡到更復雜的分布式服務架構。讀者將瞭解什麼是分布式係統,以及它如何通過將任務分解到多個計算節點上來提高係統的可用性和可伸縮性。我們將介紹微服務架構的理念,分析其如何通過將大型應用拆分成小型、獨立的服務來提高開發效率和靈活性。同時,我們也將討論SOA(麵嚮服務的體係結構)等其他服務設計模式,並對比它們的異同。理解服務如何被發現、如何被調用、如何進行狀態管理,是掌握互聯世界運作的關鍵。 最後,我們將展望互聯世界的未來發展趨勢。我們將探討物聯網(IoT)的興起,以及它如何將物理世界與數字世界深度融閤,帶來前所未有的便利和可能性。我們將討論人工智能(AI)和機器學習(ML)在互聯世界中的應用,例如智能推薦、自動化決策以及自然語言處理等。我們還將關注邊緣計算的興起,以及它如何將計算能力推嚮更靠近數據源的地方,從而降低延遲並提高效率。對於雲計算,我們將探討其最新的發展,例如Serverless計算、容器化技術(如Docker和Kubernetes)等,以及它們如何進一步簡化和加速應用的開發與部署。這本書的結尾將鼓勵讀者持續學習和探索,因為互聯世界的發展日新月異,保持開放的心態和不斷進取的精神,纔能在這場數字變革中保持領先。 總而言之,這本書旨在為讀者提供一個全麵、係統、深入的互聯世界認知框架。它不是一本操作手冊,也不是一本技術指南,而是一次思想的啓迪,一次視野的拓展。通過閱讀本書,您將不再僅僅是互聯世界的使用者,更能成為一個理解者、一個洞察者,從而更自信、更有效地駕馭這個日新月異的數字時代,發掘其中蘊藏的無限可能。

用戶評價

評分

這本書的封麵設計簡潔而專業,給人一種紮實可靠的感覺。我翻開目錄,發現其中涵蓋瞭從基礎理論到實際應用的廣泛內容。我對其中關於“API 網關”的部分尤其好奇。我理解 API 網關是微服務架構中的一個重要組件,它充當瞭所有客戶端請求的入口點,負責請求路由、認證、限流、監控等多種功能。我希望書中能深入探討如何選擇和部署閤適的 API 網關解決方案,比如 Kong、Apigee 或者自己搭建一個。我期待看到關於如何配置和管理 API 網關的實際案例,以及如何利用它來簡化後端服務的復雜性,提高整體係統的可維護性和安全性。此外,書中關於“GraphQL”的介紹也引起瞭我的注意。雖然 RESTful API 已經非常普及,但 GraphQL 以其“請求什麼,就獲得什麼”的特性,在某些場景下展現齣瞭獨特的優勢。我希望書中能詳細介紹 GraphQL 的核心概念,包括 Schema 定義、查詢語言、Resolver 的實現,以及如何將其與現有的 RESTful API 進行集成。這本書如果能在這兩個前沿領域提供深入的見解和實踐指導,那麼它將極大地拓寬我的技術視野,幫助我應對日益復雜的分布式係統開發挑戰。

評分

作為一名長期從事後端開發的工程師,我深知一個優秀的 API 是係統穩定運行的基石。看到《Web API 的設計與開發》這本書,我立刻被其“設計”和“開發”並重的理念所吸引。我猜想書中在“設計”層麵,會著重強調“領域驅動設計”(DDD)在 API 建模中的應用。這不僅僅是簡單地將數據庫錶映射為 API 資源,而是從業務領域齣發,構建齣能夠準確反映業務邏輯和核心概念的 API。我期望書中能解釋如何識彆限界上下文,如何定義領域事件和聚閤根,以及如何將這些概念轉化為清晰、一緻的 API 接口。在“開發”層麵,我希望看到關於不同技術棧下 API 開發的最佳實踐,比如使用 Spring Boot、ASPring MVC、Node.js with Express、或者 Python with Django/Flask 等框架時,如何高效地實現 API 的增刪改查,如何處理數據校驗和序列化,以及如何進行單元測試和集成測試。我特彆關注書中是否會涉及“無服務器”(Serverless)架構下的 API 開發,例如 AWS Lambda 或 Azure Functions,以及如何在 Serverless 環境下構建可擴展、高可用的 API。如果這本書能夠將理論設計與實踐開發緊密結閤,並提供不同技術棧的對比和選型建議,那麼它對於我這樣的經驗開發者來說,無疑是一份寶貴的財富。

評分

在閱讀這本書的標題時,我首先聯想到的是 API 的“可測試性”和“可觀察性”。一個設計良好的 API,不僅要滿足功能需求,更要易於測試,並且在運行時能夠被清晰地監控。我希望這本書能詳細闡述如何編寫可維護的 API 測試用例,包括單元測試、集成測試,甚至端到端的 API 測試。書中可能還會介紹一些常用的測試框架和工具,以及如何構建一個健壯的自動化測試流水綫。同時,關於“可觀察性”,我期待書中能講解如何集成日誌記錄、指標收集和分布式追蹤係統。比如,如何記錄詳細的 API 請求和響應日誌,如何收集關鍵性能指標(如響應時間、錯誤率),以及如何使用 OpenTracing 或 Prometheus 等工具來監控 API 的健康狀況。這對於故障排查和性能優化至關重要。此外,我還在思考這本書是否會涉及“API 契約測試”的概念。API 契約測試確保瞭服務提供者和消費者之間的通信符閤預期的規範,可以有效地防止由於接口不匹配而導緻的集成問題。如果書中能深入講解契約測試的實現方法和最佳實踐,那麼它將極大地提升我團隊在微服務環境下的開發效率和穩定性。

評分

我是一名對軟件架構充滿熱情的研究者,因此《Web API 的設計與開發》這個標題立刻吸引瞭我的目光。我猜想這本書不僅僅是關於代碼實現,更會深入探討 API 在整個軟件係統中的架構地位和演進。我希望書中能詳細分析不同 API 風格的優劣勢,例如 REST、gRPC、SOAP 等,以及它們各自適用的場景。我期待看到關於如何根據業務需求和技術約束來選擇最閤適的 API 架構模式的指導。書中可能還會探討 API 生命周期管理,包括 API 的設計、開發、部署、監控、版本控製和最終的退役。我希望能看到關於如何構建一個可持續演進的 API 生態係統的策略。另外,我對於“API 經濟學”或者“API 産品化”的概念也非常感興趣。一個成功的 API 不僅是技術組件,更可以成為一種産品,為企業帶來新的商業價值。我希望書中能分享如何將 API 作為産品來思考,如何進行用戶研究、價值定位、以及如何製定 API 的商業模式。這本書如果能提供一個宏觀的視角,幫助讀者理解 API 在現代軟件工程中的戰略意義,那麼它將超越一本技術手冊,成為一本能夠啓發思考的著作。

評分

這本書的標題著實吸引人——《Web API 的設計與開發》。作為一名渴望深入理解現代軟件開發核心的開發者,我一直對如何構建高效、可擴展且易於維護的 API 抱有濃厚興趣。這本書承諾提供這樣的知識,這讓我充滿瞭期待。我設想它會詳細闡述 RESTful 原則的精髓,不僅僅是錶麵的 GET、POST、PUT、DELETE,而是對其背後更深層次的哲學和最佳實踐進行剖析,例如如何有效地利用 HTTP 狀態碼來傳達信息,如何設計資源 URI 以保持清晰和可讀性,以及如何進行版本控製以應對未來的變更。我希望能看到關於 API 安全性的詳盡討論,包括 OAuth 2.0、JWT 等認證和授權機製的應用,以及如何抵禦常見的安全威脅。同時,我也期待書中能深入講解 API 性能優化策略,比如緩存機製、分頁處理、異步操作等,這些都是構建高性能 Web 應用的關鍵。此外,一個好的 API 設計不僅僅關乎技術實現,更需要考慮開發者體驗,我希望書中能分享如何編寫清晰的文檔,如何設計易於理解的數據格式(如 JSON),以及如何提供有用的錯誤信息。這本書如果能涵蓋這些方麵,那麼它絕對會成為我案頭必備的參考書,幫助我從初學者蛻變為 API 設計與開發的熟練工。

評分

不錯的一次網購

評分

這個已經涉及到架構的問題瞭 小弟纔疏學淺 沒看明白

評分

質量還行.....

評分

質量很好,很不錯,清楚,很受用

評分

前端設計要求看的書,買迴來還沒看。。

評分

很好,很不錯,很多,是正品

評分

不推薦。書裏有一些低級錯誤,而且比較囉嗦,不過耐心好的可以試試

評分

不錯,不錯,物流很快,東西也還好

評分

送貨很快,産品不錯,性價比很高

相關圖書

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有