vid*_*idy 4 reactjs spring-boot axios
我正在尝试使用 axios get request 将名称数组传递给 spring 控制器。如果我尝试在 params 中传递单个值,它工作正常,但如果在 params 中传递数组,那么我会收到错误“CORS 标头‘Access-Control-Allow-Origin ' 丢失的”。我试过这个
这是网址
http://localhost:8080/onlineshopping/view/category/products?name[]=Alex&name[]=john
Run Code Online (Sandbox Code Playgroud)
任务动作.js
var request = {
params: {
name : JSON.parse(localStorage.getItem('name'))
}
}
const res = await axios.get(`http://localhost:8080/onlineshopping/view/category/products`,request);
dispatch({
type: GET_CATEGORY_PRODUCTS,
payload: res.data
});
};
Run Code Online (Sandbox Code Playgroud)
但这不起作用
我的弹簧控制器
@RequestMapping(value = "/view/category/products")
public Map<String, Object> viewProducts(
@RequestParam(value = "name[]", required = false) List<String> name,
HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> mapproducts = new HashMap<String, Object>();
for (String Str : name) {
System.out.println("name " + Str);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用查询字符串解析和字符串化库“qs”。
import Qs from 'qs'
params = {
name : JSON.parse(localStorage.getItem('name'))
}
let myAxios = axios.create({
paramsSerializer: params => Qs.stringify(params, {arrayFormat: 'repeat'})
})
const res = await
myAxios.get(`http://localhost:8080/onlineshopping/view/category/products`, {params});
dispatch({
type: GET_CATEGORY_PRODUCTS,
payload: res.data
});
};
Run Code Online (Sandbox Code Playgroud)
你会得到这样的网址
http://localhost:8080/onlineshopping/view/category/products?name=Alex&name=john
Run Code Online (Sandbox Code Playgroud)
在弹簧控制器中,您可以使用拆分字符串
Arrays.asList(name.split("\\s*,\\s*"))
Run Code Online (Sandbox Code Playgroud)
弹簧控制器
@RequestMapping(value = "/view/category/products")
public Map<String, Object> viewProducts(
@RequestParam(value = "name", required = false) String name,
HttpServletRequest request, HttpServletResponse response) {
List<String> name = Arrays.asList(name.split("\\s*,\\s*"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5611 次 |
最近记录: |