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