如何根据返回的数据类型将 ASP.Net 核心 api 返回值路由到适当的可观察对象



我创建了一个带有Angular 7前端的 ASP.NET Core Web Api后端。API 中的一种方法可以将对象或数组返回到 Angular 服务。如何根据返回的数据类型路由到特定的可观察对象?我是Angular的菜鸟,所以任何善意的帮助将不胜感激。

Angular service call to Api:
getLinksFromSitus(situs: any) {
    this.http.post(this.baseUrl + 'getLinksFromSitus', situs).subscribe(data =>
    this.apiData.next(data)
    );
  }

Portion of Web Api that returns array if more than one APN present:
// if more than one item in list, get status information for each and return list to user to select appropriate apn
            if (propApn.Count > 1)
            {
                return Ok(propApn);               
            }

Portion of same method to return object if only one value for APN:
var resultsModel = new Results
            {
                ArcGisLink = arcGisLink,
                HistInfoLink = histInfoLink,
                PropInfoLink = propInfoLink          
            };
            return Ok(resultsModel);

你不能这样做。Typescript 只能在构建时基于静态分析键入内容,您的描述需要 Typescript 在构建时知道您的 API 调用的结果,但它不会这样做。

您能做的最好的事情就是指示您的 API 调用可以返回您的两个:

public myApiFunc(req: MyRequestModel): Observable<any>

但这仍然需要您确定在运行时返回的类型。

我能够找到一个有效的解决方案......

getLinksFromSitus(situs: any) {
    this.http.post(this.baseUrl + 'getLinksFromSitus', situs).subscribe(data => {
    if (data.hasOwnProperty('arcGisLink')) {
      this.apiData.next(data);
    } else {
      let vals = [];
      vals = this.apiPropApn.getValue();
      const item = vals.concat(data);
      this.apiPropApn.next(item);
      }
    });
  }

因此,在订阅 HttpResponse 后,我能够检查响应中的数据是否包含已知属性。如果它不包含已知属性,则它将数据连接到 BehaviorSubject 数组。它工作得很好。

最新更新