【问题标题】:Batch call to API some responses are returning invalid json response body批量调用 API 一些响应返回无效的 json 响应正文
【发布时间】:2019-01-06 17:27:43
【问题描述】:

我有一个 for each 语句,它获取一个股票市场代码并通过一个函数运行它,该函数触发 fetch 调用以检索有关该代码的数据。

运行我的应用程序时,我会在控制台中返回此信息。

`Error with CACFetchError: invalid json response body at https://api.iextrading.com/1.0/stock/market/batch?symbols=CAC&types=quote,chart&range=1d&chartInterval=30 reason: Unexpected token < in JSON at position 0`

这表明响应不是 JSON,但您可以通过访问它看到它是正确的,并且位置 0 处不存在“

https://api.iextrading.com/1.0/stock/market/batch?symbols=CAC&types=quote,chart&range=1d&chartInterval=30

我不知道是什么原因造成的。我尝试设置超时延迟,以防 API 受到限制,但没有运气。

【问题讨论】:

    标签: javascript json api fetch


    【解决方案1】:

    这种消息强烈表明响应可能是 HTML 而不是 JSON。重新检查您请求的 api 端点。还要确保 api 发回 JSON。使用 postman 查看来自 api 的响应

    编辑:您是否也对收到的响应调用了json() 函数?

    【讨论】:

    • 感谢您的回复。正如您在上面的端点链接中看到的那样,它返回的是有效的 JSON,是的,我可以确认我有 .then(res=&gt;res.json()) 链接到我的 fetch
    • 尝试 console.log 代码中的响应。请求可能有问题。响应状态也是200吗?编辑:console.log 响应没有任何错误,暂时删除对json() 的调用。
    • 谢谢。单独请求端点时,一切似乎都很好。我想这是因为我有 8000 多个请求,它要么超时,要么出现瓶颈。有没有办法可以增加请求之间的延迟?我试过包装一个 setTimeout 函数,但它似乎没有效果。代码在这里:github.com/alienbuild/node_alienSOI/blob/master/symbols/…
    • 能否提供使用导出的这个符号函数的代码?
    • 另外,这可能不是真正增加后续请求延迟的方法。导出函数内的匿名函数将延迟 4 秒,但如果假设您在循环中运行 symbol(),如果第一次调用符号发生在 x 秒,js 安排在 x+4 秒调用内部函数并继续前进.对 symbol() 的下一次调用发生在 x 秒+几纳秒,因此两个请求之间的延迟仍然相同。我希望你明白我的意思
    猜你喜欢
    • 2019-10-28
    • 1970-01-01
    • 2020-11-13
    • 2015-06-03
    • 2014-12-18
    • 2019-12-12
    • 2017-08-31
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多