- Spring Boot進階:原理、實戰與面試題分析
- 鄭天民
- 1468字
- 2022-07-05 09:41:39
1.3.2 Web服務
在當下的互聯網應用程序中,前后端分離的開發模式大行其道,Web服務是開發人員使用Spring Boot實現HTTP端點的基本手段。這部分內容涉及的技術體系非常豐富,我們把這些技術體系按實戰方向分成兩大部分,即輕量級Web服務和響應式Web服務。
1. Web服務的實戰內容
(1)輕量級Web服務
對于輕量級Web服務開發而言,傳統的Spring WebMVC仍然是目前主流的技術體系,我們可以使用Controller來暴露HTTP端點,并通過RestTemplate工具類來實現對遠程服務的訪問。
我們知道這種基于HTTP的請求-響應模式采用的是RESTful架構風格。但是請注意,真正的RESTful風格存在一個成熟度模型,代表最高成熟度等級的并不是我們日常所使用的WebMVC,而是HATEOAS(Hypermedia As The Engine Of Application State,基于超媒體的應用狀態引擎)。Spring也專門為實現HATEOAS提供了Spring HATEOAS框架。
針對前后端分離的開發場景,如何設計合理且高效的交互Web API是前端和后臺開發人員日常開發工作的一大難點和痛點。傳統的RESTful風格能夠很好運作的前提是提取資源的需求和API的設計之間能夠得到匹配。如果這一條件無法滿足,那么就會出現前端無法預判響應的數據格式、無法根據請求控制對應的返回結果以及需要發送多次請求等諸多問題。GraphQL為這些問題提供了解決方案,而Spring家族的Spring GraphQL框架也已經正式成為Spring頂級項目。
從實戰角度講,如何基于RESTful風格設計合理的HTTP端點、如何基于HATEOAS開發自解釋型Web API,以及如何使用GraphQL替代RESTful API,需要開發人員有相應的設計方法和實現技巧。
(2)響應式Web服務
隨著Spring 5的正式發布,我們迎來了響應式編程(Reactive Programming)的全新發展時期。響應式編程能夠提高系統的彈性。Spring在Project Reactor這款響應式編程框架的基礎上開發了Spring WebFlux框架。相較Spring WebMVC,Spring WebFlux能夠為我們實現異步、非阻塞的遠程交互過程。
在響應式的世界中,關于Web服務還有一個重要的話題,即網絡協議。我們知道HTTP是一款典型的請求-響應式的應用層協議。而請求-響應模式在很多應用場景中存在局限性,也無法與響應式編程體系進行整合。在這個背景下就誕生了RSocket協議,該協議提供了四種不同的Web交互模式,并且可以與響應式編程技術完美融合。Spring目前已經全面擁抱RSocket協議,并專門提供了Spring RSocket框架。
從實戰角度講,使用非阻塞式Web服務提升系統性能、結合響應式Web服務和響應式數據訪問技術構建全棧響應式服務體系,以及使用RSocket替代HTTP等開發技巧,可以直接應用于日常開發過程中,并實現系統性能的提升和交互方式的改進。
2. Web服務的實戰案例
可以說,開發Web服務是Spring Boot框架最主要的應用場景,因此本書提供了大量的案例來充分展示Web服務的開發過程,包括Spring WebMVC案例、Spring HATEOAS案例、Spring GraphQL案例、Spring WebFlux案例以及Spring RSocket案例。
對于使用Spring Boot開發Web服務而言,正確使用Spring WebMVC是基礎。為此,我們將通過一個案例來展示基于WebMVC構建RESTful API的實現方法。
在Spring WebMVC的基礎之上,Spring HATEOAS案例的價值在于為我們提供超媒體(Hypermedia)應用程序的開發經驗。基于超媒體中的鏈接機制,你會發現開發自解釋Web API并沒有看上去那么難。
2021年7月,Spring GraphQL發布了1.0.0版本,正式成為Spring家族的頂級項目。Spring GraphQL構建在GraphQL Java的基礎之上,是原有的GraphQL Java Spring框架的替代版本,為開發人員使用GraphQL提供了多項技術支持。我們將通過一個精簡但又完整的案例來演示最新版本Spring GraphQL的功能特性。
在開發響應式系統時,首先需要掌握的是響應式編程框架。Spring內置的響應式編程框架是Project Reactor。在掌握Project Reactor的基礎上,我們進一步通過案例來展示使用Spring WebFlux開發響應式Web服務的實現過程。開發人員可以通過使用注解和函數式編程這兩種開發模式來實現響應式Web服務,并基于全新的WebClient工具類實現非阻塞式的遠程調用過程。
關于Web服務的最后一個案例是針對RSocket這款全新的網絡通信協議給出對應的實踐技巧。我們將引入整合了RSocket協議的Spring RSocket框架,并基于該框架實現傳統的請求-響應模式,以及其他多種交互方式。
- Oracle從入門到精通(第3版)
- Spring Cloud Alibaba微服務架構設計與開發實戰
- Developing Mobile Web ArcGIS Applications
- 劍指JVM:虛擬機實踐與性能調優
- Flink SQL與DataStream入門、進階與實戰
- MySQL數據庫管理與開發實踐教程 (清華電腦學堂)
- Data Analysis with Stata
- 軟件架構:Python語言實現
- Java 11 Cookbook
- 深入理解Android:Wi-Fi、NFC和GPS卷
- Unity 2017 Game AI Programming(Third Edition)
- PHP 8從入門到精通(視頻教學版)
- 人人都能開發RPA機器人:UiPath從入門到實戰
- Microsoft HoloLens By Example
- Android嵌入式系統程序開發(基于Cortex-A8)