SpringBoot中REST API 接口傳參的實(shí)現(xiàn)
我們?cè)陂_發(fā) REST API
的過程中,經(jīng)常需要傳遞參數(shù),那么,我們可以怎么做呢?本文,我們將探討 Spring Boot
項(xiàng)目中三種傳遞參數(shù)的方式,如下??
@PathVariable
@RequestParam
@RequestBody
什么是 REST API
?REST API 是基于 REST
架構(gòu)原則設(shè)計(jì)的一組規(guī)范和約定,用于在不同軟件系統(tǒng)之間進(jìn)行通信。
測(cè)試環(huán)境
macOs Monterey 12.4 (Apple M1)
IntelliJ IDEA 2021.2.2(Ultimate Edition)
java --version (17.0.7)
maven version 3.9.2
Spring Boot version 3.2.0
Postman version 8.12.1
相關(guān)依賴
這里我們不考慮數(shù)據(jù)庫(kù)、security
等的引入,相關(guān)的依賴比較簡(jiǎn)單,如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
spring-boot-starter-web
是用于開發(fā)基于 Spring Boot
的 Web
應(yīng)用程序的起步依賴,支持 RESTful API
的開發(fā)。
PS:當(dāng)然,我們后期可以引入數(shù)據(jù)庫(kù)、
JWT
等操作,但是,這個(gè)知識(shí)點(diǎn)并不是本文的重點(diǎn)
@PathVariable 注解
@PathVariable
注解用于從 URI
中提取模版變量,并將其綁定到方法的參數(shù)上。如下:
@RestController @RequestMapping("/api") public class HelloController { @GetMapping("/hello/{name}") public String sayHello(@PathVariable String name) { return "Hello, " + name + "!"; } }
啟動(dòng)程序,在 postman
中輸入 http://localhost:8080/api/hello/Jimmy
,即可看到輸出 Hello, Jimmy!
的返回信息。如下圖??
上面的 @GetMapping("/hello/{name}")
和 @PathVariable String name
其實(shí)是省略了同名的寫法,如果 GetMapping
中路徑變量和方法的參數(shù)變量不同名,我們需要做下調(diào)整。
@RestController @RequestMapping("/api") public class HelloController { @GetMapping("/hello/{username}") public String sayHello(@PathVariable("username") String name) { return "Hello, " + name + "!"; } }
上面的運(yùn)行效果跟截圖展示的效果一樣。
@RequestParam 注解
@RequestParam
注解將 HTTP
請(qǐng)求中的參數(shù)值映射到方法的參數(shù)上。如下示范:
@RestController @RequestMapping("/api") public class ParamController { @RequestMapping("/param") public String requestParamDemo(@RequestParam String name) { return "Hello, " + name + "!"; } }
我們?cè)?nbsp;postman
上請(qǐng)求 http://localhost:8080/api/param?name=Jimmy
,可看到輸出 Hello, Jimmy!
的字樣。
上面的代碼中傳參還可以是下面的這種推薦寫法:
@RestController @RequestMapping("/api") public class ParamController { @RequestMapping("/param") public String requestParamDemo(@RequestParam("username") String name) { return "Hello, " + name + "!"; } }
這個(gè)時(shí)候,我們?cè)?nbsp;postman
上傳遞的 username
值,其實(shí)就是賦予了變量 name
,如下??
@RequestBody 注解
@RequestBody
注解 注解用于處理 HTTP
請(qǐng)求體的內(nèi)容映射到方法的參數(shù)上。使用 @RequestBody
注解可以將請(qǐng)求體的內(nèi)容轉(zhuǎn)化為相應(yīng)的 Java
對(duì)象,以便在方法中處理。如下例子:
我們先創(chuàng)建一個(gè) bean
類:
@Setter @Getter public class Person { String username; }
然后創(chuàng)建一個(gè) controller
:
@RestController @RequestMapping("/api") public class requestBodyController { @RequestMapping("/request-body") public String requestBodyDemo(@RequestBody Person person) { return "Hello, " + person.getUsername() + "!"; } }
在 postman
上請(qǐng)求接口 http://localhost:8080/api/request-body
,在 Body
請(qǐng)求輸入 json
數(shù)據(jù),如下:
總結(jié)
本文中,我們一起學(xué)習(xí)了 @PathVariable
注解、RequestParam
注解和 RequestBody
注解來處理 HTTP
請(qǐng)求的傳遞參數(shù)。本文中的案例,我們都是使用了 Get
請(qǐng)求來模擬,但是實(shí)際上,RequestBody
用得更多的是在 POST
新增記錄和 PUT
修改記錄的情況。三個(gè)注解搭配使用,完成參數(shù)的傳遞。
到此這篇關(guān)于SpringBoot中REST API 接口傳參的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot REST API 接口傳參內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java json 省市級(jí)聯(lián)實(shí)例代碼
這篇文章介紹了java json 省市級(jí)聯(lián)實(shí)例代碼,有需要的朋友可以參考一下2013-09-09幾句話說清session,cookie和token的區(qū)別及說明
這篇文章主要介紹了幾句話說清session,cookie和token的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Springboot 整合通用mapper和pagehelper展示分頁數(shù)據(jù)的問題(附github源碼)
這篇文章主要介紹了Springboot 整合通用mapper和pagehelper展示分頁數(shù)據(jù)(附github源碼),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Java+Swing實(shí)現(xiàn)醫(yī)院管理系統(tǒng)的完整代碼
這篇文章主要介紹了Java+Swing實(shí)現(xiàn)醫(yī)院管理系統(tǒng)的完整代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05Springboot集成Actuator監(jiān)控功能詳解
這篇文章主要介紹了Springboot集成Actuator監(jiān)控功能詳解,有時(shí)候我們想要實(shí)時(shí)監(jiān)控我們的應(yīng)用程序的運(yùn)行狀態(tài),比如實(shí)時(shí)顯示一些指標(biāo)數(shù)據(jù),觀察每時(shí)每刻訪問的流量,或者是我們數(shù)據(jù)庫(kù)的訪問狀態(tài)等等,這時(shí)候就需要Actuator了,需要的朋友可以參考下2023-09-09這么設(shè)置IDEA中的Maven,再也不用擔(dān)心依賴下載失敗了
今天給大家?guī)硪粋€(gè)IDEA中Maven設(shè)置的小技巧.這個(gè)技巧可以說非常有用,學(xué)會(huì)設(shè)置之后,再也不用擔(dān)心maven依賴下載變慢的問題,需要的朋友可以參考下2021-05-05Java實(shí)現(xiàn)利用圖片或視頻生成GIF并發(fā)送微信
這篇文章主要為大家詳細(xì)介紹了Java語言如何利用圖片或視頻實(shí)現(xiàn)生成GIF并發(fā)送微信的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-11-11Java介紹多線程計(jì)算階乘實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Java多線程計(jì)算階乘的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06