PUT请求从Angular5到spring-boot

时间:2018-06-08 23:44:36

标签: java spring spring-data angular5

如您所知,put请求如下所示:

put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>

所以在角度上我的情况看起来像这样:

updateIntervention(id:number,idDev:number){
    if(this.authService.getToken()==null) {
      this.authService.loadToken();
    }
    return this.http.put(this.host+"/updateIntervention/"+id,idDev,{headers:new HttpHeaders({'Authorization':this.authService.getToken()})});
  }

所以在spring-data(后端)中,等待PUT请求的方法应该类似于:

@RequestMapping(value="/updateIntervention/{id}",method = RequestMethod.PUT)
 public Intervention update(@PathVariable Long id , @RequestBody B obj){

 ... 
}

所以obj这里是B类的一个对象,它有一个Long类型的attribte,它将返回angular5发送的PUT请求的主体。

我的问题是我一直在spring-data中创建这些不同的类(因为somtimes我只在body中发送一个属性,这就是为什么我创建一个新类来表示它)所以我可以通过angular甚至认为它只包含一个属性,如本例中的idDev。

有没有更好的方法可以避免在spring-data中创建新类,所以我不能通过正文中的前端发送idDev?

如果我只是为了例子:

public Intervention update(@PathVariable Long id , @RequestBody long idDev){

我收到反序列化等错误。

任何想法或不可能?

1 个答案:

答案 0 :(得分:0)

将您的参数设置为form-data并使用@RequestParam将其添加到您的控制器中:

public Intervention update(@PathVariable Long id , @RequestParam long idDev){