Java?axios與spring前后端分離傳參規(guī)范總結(jié)
前言
前后端分離開發(fā)的場景下,開發(fā)人員的工作內(nèi)容更加專注與專業(yè),但是也產(chǎn)生了一些額外的溝通成本。比如:本文中為大家說明的前后端參數(shù)傳遞與接受方法。本文主要是面對前端使用axios,后端使用Spring進(jìn)行參數(shù)接受的情況進(jìn)行說明。在使用spring的時(shí)候,與前端配合開發(fā),容易出現(xiàn)傳參歧義的2個(gè)注解是
@RequestParam
注解,默認(rèn)接收Content-Type: application/x-www-form-urlencoded
編碼格式的數(shù)據(jù)@RequestBody
注解,默認(rèn)接收J(rèn)SON類型格式的數(shù)據(jù)。
很多的文章列舉出參數(shù)傳遞失敗的問題解決方案,在我看來都不夠全面。在此我給大家總結(jié)一下
一、@RequestParam注解對應(yīng)的axios傳參方法
以下面的這段Spring java代碼為例,接口使用POST協(xié)議,需要接受的參數(shù)分別是tsCode、indexCols、table。針對這個(gè)Spring的HTTP接口,axios該如何傳參?有幾種方法?我們來一一介紹。
@PostMapping("/line") public List<? extends BaseEntity> commonEChart(@RequestParam String tsCode, @RequestParam String indexCols, @RequestParam String table){
1.1.params傳參(推薦)
使用axios實(shí)例的params進(jìn)行傳參,就會將params參數(shù)格式化為x-www-form-urlencoded的格式,與后端參數(shù)一一對應(yīng)即可傳參成功。這也是我向大家推薦的傳參方法!
return request({ url: '/chart/line', method: 'post', params: { //注意這里的key是params tsCode, indexCols, table } })
1.2.FormData傳參
還可以使用js的FormData對象進(jìn)行參數(shù)格式化,同樣可以在Spring后端正確的使用@RequestParam
注解進(jìn)行參數(shù)接收。
let params = new FormData(); params.append('tsCode', tsCode); params.append('indexCols', indexCols); params.append('table', table); return request({ url: '/chart/line', method: 'post', data: params //注意這里的key是data })
1.3.qs.stringfy傳參
還可以使用qs.stringfy
進(jìn)行參數(shù)格式化,同樣可以在Spring后端正確的使用@RequestParam
注解進(jìn)行參數(shù)接收。
import qs from "qs"; return request({ url: '/chart/line', method: 'post', data: qs.stringify({ //注意這里的key是data tsCode, indexCols, table }) })
需要注意的是使用這種方法,需要手動設(shè)置header(Content-Type)
const service = axios.create({ headers: { "Content-Type": "application/x-www-form-urlencoded" } });
二、@RequestBody的axios傳參方法
java代碼部分如下所示,DemoModel類是一個(gè)實(shí)體類,包含名稱tsCode,indexCols,table三個(gè)字符串成員變量。接收到的JSON格式參數(shù)會自動為demo對象的成員變量賦值。
@PostMapping("/line") public List<? extends BaseEntity> commonEChart(@RequestBody DemoModel demo){
@RequestBody
注解,默認(rèn)接收J(rèn)SON類型格式的數(shù)據(jù)。在axios中默認(rèn)data傳參就會默認(rèn)使用JSON數(shù)據(jù)格式,所以不用額外的特殊處理。
return request({ url: '/chart/line', method: 'post', data: { //注意這里的key是data tsCode, indexCols, table } })
到此這篇關(guān)于Java axios與spring前后端分離傳參規(guī)范總結(jié)的文章就介紹到這了,更多相關(guān)Java axios與spring內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot?使用websocket技術(shù)主動給前端發(fā)送消息的實(shí)現(xiàn)
這篇文章主要介紹了springboot?使用websocket技術(shù)主動給前端發(fā)送消息的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12如何利用rabbitMq的死信隊(duì)列實(shí)現(xiàn)延時(shí)消息
這篇文章主要介紹了如何利用rabbitMq的死信隊(duì)列實(shí)現(xiàn)延時(shí)消息問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01java連接zookeeper的實(shí)現(xiàn)示例
ZooKeeper官方提供了Java API,可以通過Java代碼來連接zookeeper服務(wù)進(jìn)行操作,本文就來介紹一下java連接zookeeper的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11SpringMVC整合SSM實(shí)現(xiàn)表現(xiàn)層數(shù)據(jù)封裝詳解
這篇文章主要介紹了SpringMVC整合SSM實(shí)現(xiàn)表現(xiàn)層數(shù)據(jù)封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10MyBatis查詢時(shí)屬性名和字段名不一致問題的解決方法
這篇文章主要給大家介紹了關(guān)于MyBatis查詢時(shí)屬性名和字段名不一致問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Spring學(xué)習(xí)筆記之bean的基礎(chǔ)知識
ean在Spring和SpringMVC中無所不在,將這個(gè)概念內(nèi)化很重要,所以下面這篇文章主要給大家介紹了關(guān)于Spring學(xué)習(xí)筆記之bean基礎(chǔ)的相關(guān)資料,文中通過示例代碼介紹的非常詳解,需要的朋友可以參考下。2017-12-12swagger的請求參數(shù)不顯示,@Apimodel的坑點(diǎn)及解決
這篇文章主要介紹了swagger的請求參數(shù)不顯示,@Apimodel的坑點(diǎn)及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11