无法从API Angular 6中获取错误消息

时间:2019-03-16 18:10:32

标签: asp.net-core angular6

我使用以下函数发布给定类的对象。

mydivclass

}

在要发布内容的所有服务中调用此函数。这样。

public Post<T>(object: T, url: string, httpOptions: {}): Observable<T> {
return this.httpClient.post<T>(`${environment.apiEndpoint}` + url, object, httpOptions)
  .pipe(
    catchError(this.handleError)
  );
然后,在使用该服务的组件内执行

addEquipment。这样。

public addEquipment(equipment: Equipment): Observable<Equipment> {
    return this.shared.Post<Equipment>(equipment, this.url, this.header);
}

问题是当API返回错误(我可以在网络标签中看到一条错误消息)时,它告诉我响应中没有正文。 API返回HttpResult,错误消息将添加到响应字段。

this.equipmentService.addEquipment(result)
    .subscribe((data: any) => { this.alertService.success(data) }, (error: any) => this.alertService.error(error));

我使用以下函数来处理错误。

return new HttpResult { StatusCode = HttpStatusCode.Conflict, Response = "Error message"}

它是Angular 6和ServiceStack API。 所有建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

仅供参考,最好在ServiceStack中返回结构化的错误响应,您可以使用以下方法进行处理:

HttpError.Conflict("Error message");

ServiceStack's TypeScript ServiceClient与以下命令配合使用时,

try {
    var response = await client.post(request);
} catch (e) {
    console.log(e.responseStatus.message);
}

但是从handling errors with Angular HTTP Client的答案中可以看出,错误内容可以通过以下方式访问:

this.httpClient
  .get("data-url")
  .catch((err: HttpErrorResponse) => {
    // simple logging, but you can do a lot more, see below
    console.error('An error occurred:', err.error);
  });