【问题标题】:how to retrieve list of records without making that many calls to api如何在不调用 api 的情况下检索记录列表
【发布时间】:2020-07-20 02:53:16
【问题描述】:

我想知道是否对于 swapi 或任何 api,我调用 http://swapi.dev/api/planets/1/ ,它返回像这样的有效负载

{
    "climate": "Arid",
    "diameter": "10465",
    "gravity": "1 standard",
    "name": "Tatooine",
    "orbital_period": "304",
    "population": "200000",
    "residents": [
        "https://swapi.dev/api/people/1/",
        "https://swapi.dev/api/people/2/",
        ...
    ],
    "url": "https://swapi.dev/api/planets/1/"
}

如果我只想获取与行星 1 相关的居民姓名进行处理,是否需要单独调用每个网址以获取所有内容,然后处理这些项目以提取居民姓名?我希望有一种方法可以做到这一点,而不必按居民姓名拨打电话。

【问题讨论】:

  • 我相信你不能这样做,除非 api 有一个返回居民列表的端点。

标签: json rest http


【解决方案1】:

根据docs可以获取所有使用此端点的人的记录:

GET https://swapi.dev/api/people

这允许您构建一个简单的缓存:您可以在初始化应用时(和/或定期)发出此请求并缓存响应。 然后,您不必为每个resident-link 单独请求,而是查询缓存的人员数据并执行简单的过滤器/映射以获得所需的名称:

const namesOnly = cachedPeopleData
                   .filter(person => residentUrls.includes(person.url))
                   .map(person => person.name);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2015-07-08
    • 2019-09-08
    相关资源
    最近更新 更多