如何使用多个参数在angular5中发送POST?

时间:2018-05-14 12:28:04

标签: angular httpclient angular5 angular2-services

我在angular5简单项目(前端)和后端(spring boot)工作,我想发送一个帖子请求到api休息,有2个参数idPerson和idProject,所以api休息会影响对于所选人员的项目,我尝试在POST服务中执行此操作,但这是不可能的。

这是ProjectService.ts的代码

    addProjToClient(idPerson:number,idProject:number){
    if(this.authService.getToken()==null) {
      this.authService.loadToken();
    }
    return this.http.post(this.host+"/saveProjectToClient",idPerson,idProject,{headers:new HttpHeaders({'Authorization':this.authService.getToken()})});

  }

在http Post中不能发送2个以上的参数,我使用的是httpClient。

关于如何做到这一点的任何想法?

4 个答案:

答案 0 :(得分:2)

http.post的第二个参数是post请求的主体。只需将两个值放在正文中,然后将它们从服务器上的正文中取出即可。

return this.http.post(this.host+"/saveProjectToClient", {
  idPerson,
  idProject,
}, {
  headers:new HttpHeaders({
    'Authorization': this.authService.getToken()
  })
});

在服务器上(Springboot)

public class Dto {
    private String idPerson;
    private String idProject;
}


@Controller
@RequestMapping("/")
public class ExampleController {

   @PostMapping("/saveProjectToClient")
   public ResponseEntity postController(@RequestBody Dto dto) {
      System.out.print("Person Id was: ");
      System.out.println(dto.idPerson);
      System.out.print("Project Id was: ");
      System.out.println(dto.idProject);

      return ResponseEntity.ok(HttpStatus.OK);
    }
}

答案 1 :(得分:1)

在json对象中添加所有参数,例如:  { idPerson: 'personId', idProject: 'projectId'}作为第二个参数

答案 2 :(得分:0)

createRange(range: any, details: any): Observable { 
    let headers = new HttpHeaders().set('Content-Type', 'application/json'); 
    let body = JSON.stringify({ 'range': range, 'details': details }); 
    return this.httpClient.post(this.serviceURL + '/save', body, { headers });
}

答案 3 :(得分:-1)

尝试这样的事情:

generisiIOS(idtipkomitenta: number, idtipios: number, datumpreseka: Date, idkorisnika: number) {
        let bodyString = JSON.stringify({ idtipkomitenta, idtipios, datumpreseka, idkorisnika });
        let headers = new HttpHeaders({ 'Content-Type': 'application/JSON' });
        return this._http.post<number>('faktura/generisiios', bodyString, { headers });
    }