在Angular 7中从服务调用ID

时间:2019-03-01 10:55:53

标签: angular web-services

我有一个网络api呼叫。但是带有ID。

我有这个:

private readonly apiDiploma = 'api/support/teachers/personId';

然后我这样调用此方法:

  return this.http.get<DiplomaModel>(this.apiDiploma, spinnerMessage).pipe(map(result => result.documents));

但这不起作用。但是例如,如果我这样做:

private readonly apiDiploma = 'api/support/teachers/1001/diploma/';

因此PersonId是硬编码的。可以。

那我要改变什么?

谢谢

这是api方法:

private readonly apiDiploma = 'api/support/teachers/personId/diploma/'; 

所以我需要来自以下位置的PersonId:

export class TeacherSearchModel {
  personId: number;
  name: string;
  dateOfBirth: string;
  bsn: string;
  registerNumber: string;
}

但是,如果我这样做:

 private readonly apiDiploma = 'api/support/teachers/${personId}/diploma';

然后是这个

  getDiplomaDocumentList(spinnerMessage?: string): Observable<DocumentListModel> {
            // Get and return diploma info from backend


            return this.http.get<DiplomaModel>(this.apiDiploma,  spinnerMessage).pipe(map(result => result.documents));
        }

我仍然收到错误:

GET http://localhost:6597/api/support/teachers/$%7BpersonId%7D/diploma 400 (Bad Request)
scheduleTask @ zone.js:3243
push.../../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:410

2 个答案:

答案 0 :(得分:0)

假设personId是一个包含人员ID的变量,只需将personId链接到您的URL:'api/support/teachers/' + personId;'api/support/teachers/${personId}';

答案 1 :(得分:0)

您应该声明一个名为personId的属性,您可以根据需要/逻辑为其分配值。使用es6模板文字apiDiploma进行服务调用时,使用personId替换${this.apiDiploma}${this.personid}中的personid

private readonly apiDiploma = 'api/support/personid/diploma/';

personiId = '1234'; //you can change the personid dynamically.

return this.http.get<DiplomaModel>(this.apiDiploma.replace('personid',this.personid), spinnerMessage).pipe(map(result => result.documents));