當前位置:
首頁 > 科技 > 使用Spring構建REST服務

使用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 年

欲知更多詳細課程信息,掃描下圖「 二維碼 」添加小助手諮詢

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

深度學習在美團點評推薦平台排序中的運用
首席架構師是怎樣煉成的?今晚直播!
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