api - 如何搜索多个api服务

标签 api angular typescript search

我正在开发一个带有 angular 2 的搜索引擎。 因此,我使用来自多个平台的 API。

如果我从每个 api 服务手动调用搜索功能,它就会工作。

但是可以为每个 api 服务做同样的事情吗?

每个 api 服务都具有相同的功能:

search (query: string): Observable<Array<SearchResult>> { ... }

在 UI 中,我想用制表符分隔结果。

因此每个 api 服务都有一个标题:

public title: string = "the title";

为了在本地存储搜索结果,我有一个由每个 api 服务扩展的类。这个类有辅助函数等。

最佳答案

根据您需要的行为,您可以使用mergeconcatforkJoin 将多个流合并为一个。

代码看起来几乎一样。

例如,使用 merge 将 2 个流合并为一个。

如果您有一个 API 列表,您需要调用它来进行搜索。您的代码将如下所示。

let apis: string[] = [];

let observables = apis.map(api => search(api)); // get an array of observables

let merged = observables.reduce((previous, current) => previous.merge(current), new EmptyObservable()); // merge all obserbable in the list into one.

merged.subscribe(res => doSomething(res));

这篇文章可能是helpful .

关于api - 如何搜索多个api服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43779193/

相关文章:

javascript - Ag-Grid 树结构,将 autoGroupColumn 更改为隐藏 ID

javascript - iframe 中的 PDF 显示标题为 'Anonymous'

typescript - controller.ts(8,8) : error TS2339: Property 'user' does not exist on type 'Request' while extending express. 请求

json - 如何从 HTTP 响应正文中读取错误

ios - 保护来自 iOS 应用程序的 API 调用

android - Ionic 2 on function 无法正确刷新 ngModel

reactjs - TypeScript:JSX 元素类型没有任何构造或调用签名

javascript - HTTP put请求在node和mongodb中

javascript - themoviedb JSON API 与 jQuery

php - 如何使用 PHP 通过 Graph API 将视频发布到 Facebook