Java?axios與spring前后端分離傳參規(guī)范總結(jié)
前言
前后端分離開發(fā)的場景下,開發(fā)人員的工作內(nèi)容更加專注與專業(yè),但是也產(chǎn)生了一些額外的溝通成本。比如:本文中為大家說明的前后端參數(shù)傳遞與接受方法。本文主要是面對前端使用axios,后端使用Spring進行參數(shù)接受的情況進行說明。在使用spring的時候,與前端配合開發(fā),容易出現(xiàn)傳參歧義的2個注解是
@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。針對這個Spring的HTTP接口,axios該如何傳參?有幾種方法?我們來一一介紹。
@PostMapping("/line")
public List<? extends BaseEntity> commonEChart(@RequestParam String tsCode,
@RequestParam String indexCols,
@RequestParam String table){1.1.params傳參(推薦)
使用axios實例的params進行傳參,就會將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對象進行參數(shù)格式化,同樣可以在Spring后端正確的使用@RequestParam注解進行參數(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進行參數(shù)格式化,同樣可以在Spring后端正確的使用@RequestParam注解進行參數(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類是一個實體類,包含名稱tsCode,indexCols,table三個字符串成員變量。接收到的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)文章
Java抽象類和普通類區(qū)別、 數(shù)組跟List的區(qū)別解析
這篇文章主要介紹了Java抽象類和普通類區(qū)別、 數(shù)組跟List的區(qū)別,在這里需要注意List是一個接口,不能直接實例化,需要使用具體的實現(xiàn)類來創(chuàng)建對象,本文結(jié)合示例代碼介紹的非常詳細(xì),需要的朋友參考下吧2023-09-09
java servlet手機app訪問接口(三)高德地圖云存儲及檢索
這篇文章主要為大家詳細(xì)介紹了java servlet手機app訪問接口(三),高德地圖云存儲及檢索,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
Spring Security在標(biāo)準(zhǔn)登錄表單中添加一個額外的字段
這篇文章主要介紹了Spring Security在標(biāo)準(zhǔn)登錄表單中添加一個額外的字段,我們將重點關(guān)注兩種不同的方法,以展示框架的多功能性以及我們可以使用它的靈活方式。 需要的朋友可以參考下2019-05-05
Springboot?手動分頁查詢分批批量插入數(shù)據(jù)的實現(xiàn)流程
這篇文章主要介紹了Springboot?手動分頁查詢分批批量插入數(shù)據(jù)的實現(xiàn)流程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
SpringBoot集成JWT實現(xiàn)Token登錄驗證的示例代碼
隨著技術(shù)的發(fā)展,分布式web應(yīng)用的普及,通過session管理用戶登錄狀態(tài)成本越來越高,因此慢慢發(fā)展成為token的方式做登錄身份校驗,本文就來介紹一下SpringBoot集成JWT實現(xiàn)Token登錄驗證的示例代碼,感興趣的可以了解一下2023-12-12

