使用基本身份验证从API发布

时间:2019-11-03 14:13:15

标签: javascript angular

我无法从API下载数据

我做错了什么,但我不知道

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
    'Authorization': 'Basic ' + btoa(userPassword)
  }),
  observe: 'response' as 'body'
};

@Injectable({
  providedIn: 'root'
})

export class CoverageService {
  eligibilityUrl = nepalehrUrl + 'EligibilityRequest';

  constructor(private http: HttpClient) { }

  getEligibilityData(body:object): Observable<EligibilityResponse> {
    return this.http.post<EligibilityResponse>(this.eligibilityUrl, body, httpOptions);
  }
}

我有信息:

enter image description here

组件中的代码

let bodyEligibility = {
  resourceType: "EligibilityRequest",
  patient: {
      reference: "Patient/1975632"
  }
};

this.myEligibilityData$ = this.coverageService.getEligibilityData(bodyEligibility);

console.log(JSON.stringify(this.myEligibilityData$))

我做错了事

1 个答案:

答案 0 :(得分:0)

  

可观察对象是惰性的,除非您订阅它们,否则它们将不会执行。

因此,基本上,您必须subscribe才能观察到才能使http调用生效。当前,当您执行console.log时,您可以在浏览器console中看到可观察到的全面信息。基本上,当执行订阅函数http调用并触发基础subscribe函数时,可以在其中分配myEligibilityData的值

myEligibilityData;

this.coverageService.getEligibilityData(bodyEligibility).subscribe(data => {
    console.log(data);
    this.myEligibilityData = data;
});

如果要将此数据直接显示在HTML上,则可以保留现有代码。您不必subscribe可以观察到,而可以在HTML上使用async管道,它将应用subscribe并从Observable提取数据。

<ng-container *ngIf="myEligibilityData$ | async as myEligibilityData">
   {{myEligibilityData | json}}
</ng-container>