You need to enable JavaScript to run this app. 如何指定Yahoo Finance API返回字段而非全量返回以提升请求效率
优惠活动
大模型
产品
解决方案
定价
更多

如何指定Yahoo Finance API返回字段而非全量返回以提升请求效率

关于Yahoo Finance RapidAPI接口的字段筛选能力说明

核心结论

你当前调用的RapidAPI托管的get-quotes行情接口,不支持通过查询字符串配置参数实现服务端侧的字段裁剪。这个接口的输出逻辑是固定返回所有可用的200余个字段,本身没有内置的字段筛选入参,不管你在querystring里追加什么样的字段指定参数,服务端都会直接忽略,不会帮你做返回内容的裁剪。

可落地的等价实现方案

虽然服务端不支持字段筛选,但你完全可以在客户端侧实现“仅保留需要字段”的效果,本地处理的内存和计算开销可以忽略不计:

  • 先明确接口原生支持的查询参数仅包括region、symbols、lang三类,没有其他隐藏的筛选类参数
  • 提前定义你需要的字段白名单,比如你提到的earningsDate、epsForward、regularMarketPrice、longName、symbol,在拿到全量响应的JSON结构后,在本地代码中只提取白名单对应的键值对即可
  • 顺便修正你原代码里的两个不规范写法:一是region键前面多余的f-string前缀没有实际作用;二是symbols参数值用花括号包裹的写法,在Python中会将其识别为集合类型,容易触发参数序列化异常,需要直接传入字符串格式的标的代码

优化后的代码示例

# 提前定义需要保留的目标字段白名单
TARGET_FIELDS = [
    "earningsDate",
    "epsForward",
    "regularMarketPrice",
    "longName",
    "symbol"
]

def get_quote1(self, symbol):
    url = "https://apidojo-yahoo-finance-v1.p.rapidapi.com/market/v2/get-quotes"
    querystring = {
        "region": "US",
        "symbols": symbol
    }
    headers = {
        'x-rapidapi-key': "你的接口密钥",
        'x-rapidapi-host': "apidojo-yahoo-finance-v1.p.rapidapi.com"
    }
    response = requests.request("GET", url, headers=headers, params=querystring)
    json_data = response.json()
    # 定位到行情数据的实际存储层级
    quote_data_list = json_data.get("quoteResponse", {}).get("result", [])
    # 本地裁剪字段,只保留白名单内的内容
    trimmed_result = [
        {field: quote.get(field) for field in TARGET_FIELDS}
        for quote in quote_data_list
    ]
    return trimmed_result

关于请求耗时的额外说明

接口全量返回的200个字段对应的JSON整体体积通常仅为几十KB,本身传输带来的耗时占比很低。如果你感知到请求耗时较长,大概率来自两方面原因:一是参数序列化异常触发了请求重试;二是未开启gzip压缩传输,你可以在请求头中加上Accept-Encoding: gzip, deflate,进一步降低传输耗时。


内容的提问来源于stack exchange,提问作者Eric Egana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 05:45:09