我在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。
关于如何做到这一点的任何想法?
答案 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 });
}