所以我正在尝试让我的Angular2应用程序向我的Spring后端发送一个帖子请求,但我不断收到400个错误。
Angular2前端服务:
createEntry(name: string, url: string){
let body = JSON.stringify({sid:null,entryName: name, entryUrl: url, dtcreated:null});
console.log(body);
return this.http.post(environment.serviceURL + 'createentry', body, {headers: this.getHeaders()})
.map(res => {return res.json();});
}
getHeaders(){
let headers = new Headers();
headers.append('Content-Type', 'application/json');
return headers;
}
Spring Backend:
@RequestMapping(value="/createentry", method=RequestMethod.POST)
@ResponseBody
public ListEntry createEntry(@RequestParam(value = "entry") ListEntry entry){
System.out.println(entry.getEntryName());
System.out.println(entry.getEntryUrl());
entry.setDtCreated(Calendar.getInstance().getTime());
return listRepository.save(entry);
}
我在浏览器中从控制台获得的错误是:
POST http://localhost:8001/createentry 400()
答案 0 :(得分:1)
事实证明这是一个非常简单的修复。
我只需要改变
public ListEntry createEntry(@RequestParam(value = "entry") ListEntry entry)
到
public ListEntry createEntry(@RequestBody ListEntry entry)
它立即开始工作。显然,使用Spring,@ RequestBody用于所有POST和PUT请求,而@RequestParams用于GET请求。