RESTful API開發(fā)實戰(zhàn)
《RESTful API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》講述如何使用RESTful技術(包括REST、JSON、XML、JAX-RS Web服務和SOAP等)來構建當今的微服務、大數(shù)據(jù)應用以及Web服務應用。作者Sanjay Patni曾在加州大學圣克魯茲分校講授架構、*設計實踐和編碼實驗課程,本書就是在此基礎上撰寫的。
本書自上而下呈現(xiàn)所有基礎知識:從頂部的架構到中間的設計,再到底部的編碼。本書是任何微服務(或Web服務)開發(fā)人員構建應用程序和服務的必
備參考書籍。
主要內(nèi)容:
● 介紹主要的RESTful API,包括REST、JSON、XML、JAX-RS和SOAP等。
● 將RESTful技術用于Web服務和數(shù)據(jù)交換開發(fā)中,尤其用于當今的大數(shù)據(jù)環(huán)境。
● 在示例和案例研究的引導下學習使用XML、JSON、REST和JAX-RS。
對于Web 系統(tǒng)的交換來說,你將學習HTTP 協(xié)議,包括如何使用XML。《RESTful API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》還比較了SOAP 和REST,介紹無狀態(tài)轉移的概念。同時介紹軟件API 設計和*實踐等。后半部分將重點討論遵循JAX-RS 標準的RESTful API 的設計和實現(xiàn),以及通過Java API 構建RESTful Web 服務。你將學習如何使用JSON 和XML 構建和使用JAX-RS 服務,并通過實際案例使用RESTful API 將眾多不同的數(shù)據(jù)源集成在一起(包括關系型數(shù)據(jù)庫和NoSQL 數(shù)據(jù)庫等)。你將應用這些*實踐完成一個小型軟件系統(tǒng)API 的設計與實現(xiàn),并以RESTful API 的方式公開可用的API 服務。
前 言
眾所周知,數(shù)據(jù)庫、網(wǎng)站以及業(yè)務應用之間都需要數(shù)據(jù)交換。這通過定義標準的數(shù)據(jù)格式、傳輸協(xié)議或Web服務來實現(xiàn),常見的數(shù)據(jù)格式有XML(Extensible
Markup Language,可擴展標記語言)、JSON(JavaScript
Object Notation,JavaScript對象表示法)等,常見的傳輸協(xié)議或Web服務包括SOAP(Simple
Object Access Protocol,簡單對象訪問協(xié)議),以及目前更受歡迎的REST(Representational
State Transfer,表述性狀態(tài)傳遞)等。開發(fā)人員通常需要設計自身應用的API接口,使得應用能集成特定的業(yè)務邏輯并運行在操作系統(tǒng)或服務器上!禦ESTful
API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》涵蓋以上數(shù)據(jù)交換概念和通用的數(shù)據(jù)格式,并重點闡述如何構建REST風格的API。
對于Web系統(tǒng)的交換來說,你將學習HTTP協(xié)議,包括如何使用XML。另外《RESTful API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》還比較了SOAP和REST,介紹無狀態(tài)轉移的概念。同時介紹軟件API設計和最佳實踐等。《RESTful
API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》后半部分將重點討論遵循JAX-RS標準的RESTful API的設計和實現(xiàn),以及通過Java API構建RESTful Web服務。你將學習如何使用JSON和XML構建和使用JAX-RS服務,并通過實際案例使用RESTful
API將眾多不同的數(shù)據(jù)源集成在一起(包括關系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫等)。你將應用這些最佳實踐完成一個小型軟件系統(tǒng)API的設計與實現(xiàn),并以RESTful
API的方式公開可用的API服務。
《RESTful API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》適用于那些在實際項目中使用數(shù)據(jù)交換的軟件開發(fā)人員,對那些希望了解數(shù)據(jù)交換方法以及如何與業(yè)務應用交互的數(shù)據(jù)專家同樣有所幫助。書中的案例練習要求讀者具有Java編程經(jīng)驗。
《RESTful API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》的主題包括:
數(shù)據(jù)交換和Web服務
SOAP與REST,有狀態(tài)與無狀態(tài)
XML與JSON
API設計簡介:REST和JAX-RS
API設計實踐
設計RESTful API
構建RESTful API
與RDBMS(MySQL)進行交互
使用RESTful API(比如JSON、XML)
API安全性-OAuth
API緩存
源代碼下載
讀者可訪問www.apress.com/9781484226643下載源代碼,也可掃描《RESTful API開發(fā)實戰(zhàn) 使用REST JSON XML和JAX-RS構建微服務 大數(shù)據(jù)和Web服務應用》封底的二維碼直接下載。
Sanjay Patni是一位注重實際成果的技術專家,在創(chuàng)新技術方案與業(yè)務實際需求的協(xié)調(diào)上具有豐富的經(jīng)驗,長期致力于企業(yè)業(yè)務流程的優(yōu)化和運營效率的提升。在過去五年中,他一直在Oracle公司的Fusion Apps產(chǎn)品研發(fā)團隊任職,在那里他發(fā)現(xiàn)了對Fusion Apps代碼管理實現(xiàn)自動化的機會,其中不僅涉及GA版本的交付發(fā)行,還包括正在進行的演示、開發(fā)和測試代碼。他提出并開發(fā)了自助服務UX用于代碼請求和審核,減少了80%的手工步驟。他還發(fā)起了12次代碼快速迭代,通過使用工作流和RESTful API等自動化技術與其他子系統(tǒng)進行集成,使得大約100多個手工步驟實現(xiàn)了自動化。在加盟Oracle前,他已經(jīng)在軟件行業(yè)工作了15年以上,為不同的行業(yè)提供關鍵技術解決方案。他的職責包括對基于Web的企業(yè)級產(chǎn)品和解決方案提供技術創(chuàng)新、需求理解和分析,技術架構設計,以及推進軟件敏捷開發(fā)等。他率先創(chuàng)新使用Java來構建業(yè)務應用,不斷推動和完善用于企業(yè)級業(yè)務應用構建的Java API,并獲得Sun Microsystems公司頒發(fā)的獎項。Sanjay曾擔任RESTful API設計和集成培訓或課程的客座講師、技術導師。他擁有強大的計算機科學教育背景,碩士畢業(yè)于印度理工學院(IIT)。
目 錄
第1章 RESTful API的基本原理 1
1.1 SOAP和REST的比較 3
1.2 Web架構風格 4
1.2.1 CS模式 5
1.2.2 統(tǒng)一資源接口 5
1.2.3 分層系統(tǒng) 5
1.2.4 緩存機制 6
1.2.5 無狀態(tài) 6
1.2.6 按需編碼 6
1.2.7 HATEOAS
6
1.3 安全性 7
1.4 什么是REST? 8
1.4.1 REST基礎知識 8
1.4.2 REST基本原理 9
1.5 小結 10
第2章 API設計和建模 11
2.1 API設計策略 11
2.2 API創(chuàng)建流程和方法論 13
2.2.1 流程 13
2.2.2 API方法論 14
2.2.3 域分析或API描述 14
2.2.4 架構設計 15
2.2.5 原型設計 16
2.2.6 實現(xiàn) 16
2.2.7 發(fā)布 16
2.2.8 API建模 16
2.2.9 API建模的比較 18
2.3 最佳實踐 19
2.3.1 保持基礎URL簡明直觀 19
2.3.2 錯誤處理 20
2.3.3 版本控制 22
2.3.4 局部響應 23
2.3.5 分頁 23
2.3.6 多格式 24
2.3.7 API Façade
24
2.4 API解決方案架構 24
2.4.1 移動解決方案 25
2.4.2 云端解決方案 25
2.4.3 Web端解決方案 26
2.4.4 集成解決方案 26
2.4.5 多終端解決方案 26
2.4.6 智能電視解決方案 26
2.4.7 物聯(lián)網(wǎng) 26
2.5 API解決方案中的利益相關者 26
2.5.1 API提供者 27
2.5.2 API消費者 27
2.5.3 最終用戶 27
2.6 小結 33
第3章 XML與JSON介紹 35
3.1 XML簡介 35
3.1.1 XML注釋 36
3.1.2 XML的重要性 37
3.1.3 如何使用XML
38
3.1.4 XML的優(yōu)缺點 38
3.2 JSON簡介 38
3.2.1 JSON語法 39
3.2.2 JSON的重要性 40
3.2.3 如何使用JSON
41
3.2.4 JSON的優(yōu)缺點 42
3.3 XML和JSON的比較 42
第4章 JAX-RS介紹 51
4.1 JAX-RS簡介 51
4.1.1 輸入和輸出內(nèi)容類型 52
4.1.2 JAX-RS注入 53
4.2 REST實現(xiàn) 55
第5章 API組合和框架 65
5.1 API組合架構 65
5.1.1 需求 65
5.1.2 一致性 65
5.1.3 可重用 66
5.1.4 可定制 66
5.1.5 可發(fā)現(xiàn) 66
5.1.6 持久性 66
5.2 如何實施這些需求治理? 67
5.2.1 一致性 67
5.2.2 可重用 67
5.2.3 可定制 67
5.2.4 可發(fā)現(xiàn) 68
5.2.5 變更管理 68
5.3 API框架 68
5.3.1 流程API服務層 69
5.3.2 系統(tǒng)API-數(shù)據(jù)訪問對象 69
5.3.3 體驗API-API外觀 70
5.3.4 服務層實現(xiàn) 70
第6章 API平臺和數(shù)據(jù)處理器 81
6.1 API平臺架構 81
6.1.1 我們?yōu)槭裁葱枰狝PI平臺 81
6.1.2 什么是API平臺 82
6.1.3 API平臺需要具備的功能 82
6.1.4 API平臺是如何組織的,什么是API平臺的架構 84
6.1.5 API架構如何適應圍繞企業(yè)的技術架構 85
6.2 數(shù)據(jù)處理器 86
6.2.1 數(shù)據(jù)訪問對象(DAO)
86
6.2.2 命令查詢職責分離(CQRS)
86
6.3 小結 101
第7章 API管理和API客戶端 103
7.1 外觀 103
7.1.1 外觀模式 103
7.1.2 API外觀 104
7.2 API管理 105
7.2.1 API生命周期 106
7.2.2 API下線 107
7.2.3 API盈利 108
第8章 API安全性與緩存機制 115
8.1 API安全性-OAuth
2 115
8.1.1 角色 116
8.1.2 令牌 116
8.1.3 注冊成客戶端 117
8.1.4 授權授予類型 118
8.1.5 隱式授予流程 119
8.1.6 資源擁有者密碼憑據(jù)授予 121
8.1.7 客戶端憑據(jù)授予 122
8.2 緩存機制 123
8.2.1 服務器緩存機制 124
8.2.2 HTTP緩存機制 124
8.2.3 Web緩存機制 126
8.3 小結 129