使用Spring構建REST服務
REST 已經迅速成為網路上構建 Web 服務的實際標準,因為他們易於構建並易於使用。
關於 REST 如何適應微服務的世界,有一個更大的討論,在這裡,我們只討論如何構建 RESTful 的服務。
為什麼選擇 REST?REST 在實踐中,藉助 Martin Fowler 的措辭可以解釋的更為恰當,「網路是一個有效的可擴展的分散式系統。我們可以從中獲得更容易構建系統的想法。我認為這是一個很好的理由:REST 包含了網路本身的規則,並且擁抱其架構、優勢和所有功能。」
這樣做的好處主要是像所有來自於免費的 HTTP 作為平台本身。應用安全性(加密和認證)是已知存在的解決方案,協議中內置緩存,並通過 DNS 服務路由。因此,它是一個彈性的,獲得廣泛認可的系統,有無處不在的支持。
然而,無處不在的 REST 本身並不是標準,是一種對 HTTP 協議的方法、風格和約束。它實現方式可能有所不同,作為 API 消費者,這可能是一個令人沮喪的經驗。
LeonardRichardson 博士創建了一個成熟度模型,解釋各種級別 RESTful 原則、進行分級並對分級進行打分,這個分級描述了從 0 級開始的 4 個級別。
級別 0:the Swamp of POX,在這一級,我們只使用 HTTP 作為傳輸。你可以將 SOAP 稱為 0 級技術。它使用 HTTP,但只作為傳輸。值得一提的是,你也可以在沒有 HTTP 的 JMS 之上使用 SOAP。因此,SOAP 不是 RESTful 的。
級別 1:Resources。在這個級別,伺服器可能會使用 HTTP URI 來區分系統中的名詞或者實體,例如,你可以將請求路由到 /customers,/users 等。XML-RPC 是 Level1 技術的一個示例:它使用 HTTP,它可以使用 URI 來區分端點。最終,XML-RPC 不是 RESTful:它使用 HTTP 作為其他東西的傳輸(遠程過程調用)。
級別 2:HTTP Verbs。這是你想要的級別,也是我們開始旅程的地方,如果你對 Spring MVC 犯了一些錯誤,您有可能還會停留在這個階段。Web 服務使用不同的 HTTP 方法來進行不同的操作,並且使用 HTTP 狀態碼來表示不同的結果。如 HTTP GET 方法來獲取資源,HTTP DELETE 方法來刪除資源。
級別 3:Hypermedia Controls。最後一級是我們將努力去往的地方。Hypermedia(超媒體)使用 HATEOAS(The Hypermedia As The Engine Of Application Statue)。在資源的表達中包含了鏈接信息。客戶端可以根據鏈接來發現可以執行的動作。
那我們的課程可以學習到什麼?
課程大綱
一、基礎篇
Spring REST 實戰 - 基礎篇將以示例項目為入手,介紹 Spring REST 基礎及 HTTP 協議、API 設計技巧和 API 安全基礎相關知識和實踐。
第一部分:Spring REST 基礎
REST API 基礎
快速開始你的項目
「用戶中心服務」項目
項目設置
第二部分:REST 和 HTTP 協議
HTTP 狀態碼
輸入數據的基礎驗證
設計良好的 URI
響應數據格式支持
HTTP 請求的生命周期
第三部分:REST 安全基礎
Spring Security 使用
全局授權與方法級授權
Cookies 和會話
HTTPS 協議與證書示例
角色與許可權設計
二、中級篇
第四部分:使用 AngularJS 消費 REST API
前端項目及 AngularJS REST 調用
跨域資源共享 CORS
AngluarJS 與 OAuth2、Tokens
第五部分:測試 REST API
第一次 API 測試
構建 API 客戶端
HTTP 語義測試
構建通用 Client
基於 API 約定測試
第六部分:API 安全進階
OAuth2 簡介
使用 Spring Security 實現 OAuth2
Tokens、OAuth2 與 JWT
刷新 Token
前端實現 OAuth2
三、高級篇
第七部分:API 文檔管理與版本管理
使用 Swagger 進行 API 文檔管理
HATEOAS 基礎
Spring HATEOAS 使用
API 演變
第八部分:API 監控與度量統計
Spring Boot 的監控基礎
API 自定義度量統計
使用 JMX 進行監控
使用 HTTP 進行結果展示
生產環境下常用監控工具
第九部分:API 的持續集成與持續發布
搭建 Jenkins,開始你的第一個 Job
從頭開始做一個 Jenkins Pipeline
API 的遠程部署
從持續集成到持續發布
第十部分:API 高級技巧
簡單的 API 限流實現
Spring REST API 的二進位數據格式
非同步 API 請求
上課形式
學習形式:錄播+直播答疑
學習環境:專屬學習 QQ 群 + 在線直播教室
課程觀看有效期:1 年
欲知更多詳細課程信息,掃描下圖「 二維碼 」添加小助手諮詢
點擊展開全文
※深度學習在美團點評推薦平台排序中的運用
※首席架構師是怎樣煉成的?今晚直播!
※6個小時,讓你解碼Serverless 架構及平台選擇
※微博&蘑菇街&UCloud:混合雲架構實踐和系統建設經驗談
TAG:InfoQ |
※用 OpenStack Designate 構建一個 DNS 即服務(DNSaaS)
※如何使用Spring Boot構建微服務
※為什麼 web 開發人員需要遷移到.NET Core,並使用 ASP.NET Core MVC 構建 web和API
※如何使用 Apache 構建 URL 縮短服務
※Dweb:使用WebRTC/WebTorrent構建彈性Web
※雷蛇放棄OSVR項目,協助Khronos 構建OpenXR標準
※SmartMesh,MeshBox與RSK攜手構建無網通訊支付生態
※美高森美和SiFive推出HiFive Unleashed擴展板助力Linux軟體和固件開發人員首次構建RISC-V PC
※AutoML構建加速器優化模型首嘗試,谷歌發布EfficientNet-EdgeTPU
※張善友:基於Kubernetes 構建.NET Core 技術中台
※領英開源TonY:構建在Hadoop YARN上的TensorFlow框架
※VMware微軟議和合作構建NSX-y
※資源 | 領英開源TonY:構建在Hadoop YARN上的TensorFlow框架
※EOS超級節點Dmitri:構建DAPP戰略服務生態
※VR應用《SculptrVR》構建你的3D建築美學
※Box、IBM推出了新的、使用Watson的Box Skills構建服務
※谷歌發布EfficientNet-EdgeTPU,首次基於AutoML構建加速器優化模型
※Salesforce開源構建Einstein AI模型的工具
※採用NVIDIA Metropolis構建更安全、更智能的城市
※谷歌開源Kubernetes原生CI/CD構建模塊:Tekton