这是控制器:
@PostMapping(value="/order/add")
@ResponseBody
public JSONObject addOrder(@RequestParam("book") List<String> books,@RequestParam("addressid")Integer addressid){
...
}
以下是请求:
fetch(proxy+"/user/order/add",{
method: 'post',
credentials: 'include',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},
body: msg,
})
msg是这样的:
msg = "book="+encodeURIComponet(params1)+"&addressid="+encodeURIComponent(params2)
当我使用邮递员发送帖子请求时,它可以正常工作。
但是通过获取请求,后端表示它无法找到参数预订&#39;
Bad Request:Required List parameter 'book' is not present
前端有什么问题?
我通过邮递员发送的内容:postman
答案 0 :(得分:0)
Book位于POST请求的正文中,RequestParam用于URL的参数,您必须使用RequestBody将正文绑定到DTO。
答案 1 :(得分:0)
哦,我发现问题是由msg引起的
let books = this.state.books
let msg = books + "&addressid=" + encodeURIComponent(addressid)
fetch(
...
)
书籍是这里的变量:
<Route path="/buy/:books" component={CheckOrder}/>
我之前编码变量:
let books = "book="+encodeURIComponent(parmas)+"&"
window.location.href = "/buy/"+books
因此,在获取
之前对encodeURIComponent进行编码非常重要