使用Angular 2和Spring获得400个Post请求

时间:2016-09-01 13:49:56

标签: spring spring-mvc angular

所以我正在尝试让我的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()

1 个答案:

答案 0 :(得分:1)

事实证明这是一个非常简单的修复。

我只需要改变

public ListEntry createEntry(@RequestParam(value = "entry") ListEntry entry)

public ListEntry createEntry(@RequestBody ListEntry entry)

它立即开始工作。显然,使用Spring,@ RequestBody用于所有POST和PUT请求,而@RequestParams用于GET请求。