首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python聚合多个API请求结果

使用python聚合多个API请求结果
EN

Stack Overflow用户
提问于 2016-01-27 05:57:08
回答 2查看 2.7K关注 0票数 2

我正在开发一个应用程序,该应用程序必须使用多个外部API来获取信息,并且在处理数据之后,将结果输出到客户端。客户端使用web接口进行查询,一旦查询发送到服务器,服务器进程将请求发送给不同的API提供程序,并在加入这些API的响应后将响应返回给客户端。

所有响应都是JSON.

现行办法:

代码语言:javascript
复制
import requests
def get_results(city, country, query, type, position):
    #get list of apis with authentication code for this query 
    apis = get_list_of_apis(type, position) 
    results = [ ]
    for api in apis:
        result = requests.get(api)
        #parse json 
        #combine result in uniform format to display 
    return results

服务器使用Django生成响应。

这种方法的问题

(i)这可能会产生大量的数据,即使客户对所有数据都不感兴趣。

(ii)必须根据不同的API规范解析JSON响应。

如何有效地做到这一点?

注意:正在执行查询以提供职务列表.

EN

回答 2

Stack Overflow用户

发布于 2016-01-27 07:44:51

大多数这种性质的API允许某种类型的“分页”。您应该对请求进行编码,使其只从每个提供程序中绘制一个页面。然后,您可以在本地将几个页面合并为一个流。

如果我们假设您有3个提供程序,并且页面大小固定在10,您将得到30个响应。假设您只向客户端显示10个列表,则必须丢弃并重新查询20个列表。一个更好的方法可能是在本地缓存查询结果很短的时间(比如15分钟到一个小时),这样您就不必每次用户在综合列表中前进一个页面时都请求上游提供者。

就不同提供者所需的不同解析而言,您必须在内部处理这个问题。为每个类创建不同的类。提供程序的列表是固定的,并且很小,因此您可以对哪个提供程序-url获取哪个类行为的表进行编码。

票数 0
EN

Stack Overflow用户

发布于 2017-01-25 18:42:23

无耻的插件,但我写了一篇文章,我是如何做到这一点的杜兰戈REST框架这里

我强烈建议使用Django REST框架,它使一切变得更加简单。

基本上,API端的模型非常简单,只包含关于使用了什么外部API和该API资源的ID的信息。然后,GenericProvider类提供一个抽象接口来对外部源执行CRUD操作。此GenericProvider使用您创建的其他提供程序,并通过模型上的provider字段确定要使用的提供程序。然后,GenericProvider返回的所有数据都会像往常一样序列化。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35029841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档