springboot如何去獲取前端傳遞的參數(shù)的實(shí)現(xiàn)
本文主要討論spring-boot如何獲取前端傳過來的參數(shù),這些參數(shù)主要有兩大類,一類是URL里的參數(shù),一個(gè)是請(qǐng)求body里的參數(shù)
url里的參數(shù)
通過url里傳過來的參數(shù)一般有三種方式,下面我們來看一下
路徑參數(shù)
路徑參數(shù)就是說在請(qǐng)求路徑里攜帶了幾個(gè)參數(shù),比如有一個(gè)查詢banner詳情的接口,/v2/banner/123,這里的123就是參數(shù),可以表示banner的ID。
下面我們?cè)O(shè)計(jì)了一個(gè)簡(jiǎn)陋的接口,來演示路徑參數(shù)的獲取
@RestController @RequestMapping(value = "/v2/banner") public class BannerController { @GetMapping("/{id}") public Integer getBannerDetail(@PathVariable Integer id){ return id; } }
獲取banner詳情完整接口路徑是/v2/banner/{id},這里的id就是路徑參數(shù),在方法的傳參里,用@PathVariable注解標(biāo)明那個(gè)參數(shù)用來接收請(qǐng)求路徑傳遞過來的值,通過postman發(fā)個(gè)請(qǐng)求看看
這里要注意,接口路由里定義的參數(shù)名要和方法參數(shù)里的定義名字要一樣,如果不一樣需要通過@PathVariable來指定**
@GetMapping("/{id}") public Integer getBannerDetail(@PathVariable(name = "id") Integer id12){ return id12; }
查詢參數(shù)
查詢參數(shù)就是請(qǐng)求的url里?號(hào)后面跟的鍵值對(duì),比如/v2/banner?id=123,下面我們重新定義一個(gè)借口,采用查詢參數(shù)的形式獲取banner詳情
請(qǐng)求url里的查詢參數(shù)通過@RequestParam注解可以和方法里的參數(shù)進(jìn)行一一對(duì)應(yīng),比如現(xiàn)在有這么個(gè)url:/v2/banner?id=123&pos=3
,那么接口的參數(shù)定義就得是@RequestParam Integer id, @RequestParam Integer pos
,請(qǐng)求上面定義的接口看看返回值
路徑參數(shù)和查詢參數(shù)結(jié)合
路徑參數(shù)和查詢時(shí)可以同時(shí)使用的,那在定義接口的時(shí)候,同時(shí)使用這兩種注解就行,比如下面的接口
@GetMapping("/{id}") public Map<String, Object> getBannerDetail(@PathVariable Integer id, @RequestParam Integer pos){ Map<String, Object> body = new HashMap<>(); body.put("id", id); body.put("pos", pos); return body; }
請(qǐng)求一下接口
請(qǐng)求body里的參數(shù)
先來思考一個(gè)問題,當(dāng)前端傳遞過來一個(gè)json的數(shù)據(jù),我們的方法通過什么樣的形式能夠接受到參數(shù)呢?
一般來說有兩種形式,Map和自定義對(duì)象,下面我們分別來介紹一下。
Map
設(shè)計(jì)簡(jiǎn)單的banner創(chuàng)建接口,參數(shù)通過Map來接收,創(chuàng)建成功后,添加一個(gè)id,然后將傳遞的數(shù)據(jù)和id一起返回
@PostMapping(value = "/create") public Map<String, Object> createBanner(@RequestBody Map<String, Object> banner){ banner.put("id", 1243); return banner; }
這里@RequestBody的這個(gè)注解來將body里的參數(shù),轉(zhuǎn)化成一個(gè)map,請(qǐng)求一下接口看看正常不:
上面我們使用的Map,它是一個(gè)接口,在具體接收數(shù)據(jù)的時(shí)候,肯定會(huì)用一個(gè)Map的實(shí)現(xiàn)類,這就會(huì)設(shè)計(jì)到裝箱拆箱的過程,那么頻繁的裝箱拆箱會(huì)有一定到的性能損耗,所以這種方式一般并不推薦使用。
自定義對(duì)象Dto
我們將接收請(qǐng)求參數(shù)的對(duì)象稱作為數(shù)據(jù)傳輸對(duì)象,一般定義為XXXDto,這里我們定義一個(gè)創(chuàng)建banner時(shí)用來接收參數(shù)的對(duì)象BannerCreateDto.
public class BannerCreateDto { private String name; private Integer pos; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getPos() { return pos; } public void setPos(Integer pos) { this.pos = pos; } }
在Controller具體使用:
@PostMapping(value = "/create") public Map<String, Object> createBanner(@RequestBody BannerCreateDto dto){ Map<String, Object> res = new HashMap<>(); res.put("id", 10000); res.put("name", dto.getName()); res.put("pos", dto.getPos()); return res; }
用@RequestBody標(biāo)記BannerCreateDto對(duì)象,spring-boot會(huì)自動(dòng)調(diào)用對(duì)象的getter和setter給他賦值。我們請(qǐng)求一下看看:
總結(jié)
以上就是我們對(duì)spring-boot進(jìn)行參數(shù)接收時(shí)處理方式的討論,包括路徑參數(shù)以及查詢參數(shù),還有body參數(shù)的接收,下篇文章我們將討論一下參數(shù)的校驗(yàn),敬請(qǐng)關(guān)注?。?/p>
到此這篇關(guān)于springboot如何去獲取前端傳遞的參數(shù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springboot 獲取前端傳遞參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java?Semaphore共享鎖實(shí)現(xiàn)原理解析
這篇文章主要為大家介紹了Semaphore共享鎖實(shí)現(xiàn)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01mybatis的dtd約束文件及配置文件xml自動(dòng)提示操作
這篇文章主要介紹了mybatis的dtd約束文件及配置文件xml自動(dòng)提示操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12SpringBoot報(bào)錯(cuò)Invalid?bound?statement?(not?found)問題排查和解決方案
這篇文章主要介紹了SpringBoot報(bào)錯(cuò)Invalid?bound?statement?(not?found)問題排查和解決方案,文中通過圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03C#創(chuàng)建Web應(yīng)用程序代碼實(shí)例
本文主要通過實(shí)例代碼介紹了C#創(chuàng)建Web應(yīng)用程序,需要的朋友可以參考下2017-04-04解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問題
下面小編就為大家?guī)硪黄鉀Qspring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決
這篇文章主要介紹了調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12利用Java實(shí)現(xiàn)帶GUI的氣泡詩詞特效
這篇文章主要為大家介紹了如何利用Java語言實(shí)現(xiàn)帶GUI的氣泡詩詞特效,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下2022-08-08SpringSecurity安全框架在SpringBoot框架中的使用詳解
在Spring?Boot框架中,Spring?Security是一個(gè)非常重要的組件,它可以幫助我們實(shí)現(xiàn)應(yīng)用程序的安全性,本文將詳細(xì)介紹Spring?Security在Spring?Boot框架中的使用,包括如何配置Spring?Security、如何實(shí)現(xiàn)身份驗(yàn)證和授權(quán)、如何防止攻擊等2023-06-06