【问题标题】:How can I access the different properties of an API?如何访问 API 的不同属性?
【发布时间】:2019-09-18 03:59:19
【问题描述】:

我创建了一个非常简单的 JSON API。它有 3 个属性,我可以访问和使用它们的值,因为我创建了它并且我知道它的属性是什么。但是,如果我使用的 API 我不知道它有什么属性,并且我想,比如说,控制台记录它们¿我如何迭代 API 密钥?

这是我的 API:

{
    "datum1" : [{
        "year": 2005,
        "income": 23.5,
        "expenses": 18.1,
        "id":0
    }, {
        "year": 2006,
        "income": 26.2,
        "expenses": 22.8,
        "id":1
    }, {
        "year": 2007,
        "income": 30.1,
        "expenses": 23.9,
        "id":2
    }, {
        "year": 2008,
        "income": 29.5,
        "expenses": 25.1,
        "id":3
    }, {
        "year": 2009,
        "income": 24.6,
        "expenses": 24.6,
        "id":4
    }],
    "datum2" :[{
        "year": 2005,
        "income": 33.5,
        "expenses": 38.1,
        "id":0
    }, {
        "year": 2006,
        "income": 26.2,
        "expenses": 22.8,
        "id":1
    }, {
        "year": 2007,
        "income": 24.1,
        "expenses": 17.9,
        "id":2
    }, {
        "year": 2008,
        "income": 23.5,
        "expenses": 27.1,
        "id":3
    }, {
        "year": 2009,
        "income": 28.6,
        "expenses": 24.3,
        "id":4
    }],
    "brands":["Hinata","Indra","Tobi","Guy"]
}

我正在使用 json-server 为它提供服务,并从我的 Angular 应用程序中使用它。

如何在控制台中打印的不是其键(datum1、datum2、品牌)的值,而是键本身?

在对https://localhost:3000 执行获取请求后,我尝试执行for infor of,希望我能获得整个 JSON API,然后能够控制台记录密钥,但我得到 404 .

希望有人能看懂这个乱七八糟的帖子,给我一些线索。。谢谢。

【问题讨论】:

  • 如果 404 那么肯定是它的服务器问题,否则 Object.keys(your_object) 应该可以解决问题
  • 我会看到如何提问。但是,谢谢,关于你所说的我没有尝试解决这个问题:你没有读过这个吗? “在对localhost:3000 执行获取请求后,我尝试执行for infor of”.. 当然它没有用,但它是一种尝试。 ¿ 不是吗?

标签: json angular rest api


【解决方案1】:

似乎您正在尝试仅使用域名枚举所有 API 端点。 就像您想向 https://localhost:3000 发出请求一样,它应该返回服务器中所有可用 API 端点的列表。如果是这种情况,它将不可用(除非配置了特定的 API 端点来执行此操作)。如果您使用的是第三方 API,它通常会有一个包含所有可用端点和请求方法的文档。

【讨论】:

    【解决方案2】:

    使用Object.keys

    var data={
        "datum1" : [{
            "year": 2005,
            "income": 23.5,
            "expenses": 18.1,
            "id":0
        }, {
            "year": 2006,
            "income": 26.2,
            "expenses": 22.8,
            "id":1
        }, {
            "year": 2007,
            "income": 30.1,
            "expenses": 23.9,
            "id":2
        }, {
            "year": 2008,
            "income": 29.5,
            "expenses": 25.1,
            "id":3
        }, {
            "year": 2009,
            "income": 24.6,
            "expenses": 24.6,
            "id":4
        }],
        "datum2" :[{
            "year": 2005,
            "income": 33.5,
            "expenses": 38.1,
            "id":0
        }, {
            "year": 2006,
            "income": 26.2,
            "expenses": 22.8,
            "id":1
        }, {
            "year": 2007,
            "income": 24.1,
            "expenses": 17.9,
            "id":2
        }, {
            "year": 2008,
            "income": 23.5,
            "expenses": 27.1,
            "id":3
        }, {
            "year": 2009,
            "income": 28.6,
            "expenses": 24.3,
            "id":4
        }],
        "brands":["Hinata","Indra","Tobi","Guy"]
    };
    
    
    Object.keys(data).forEach(k=>{
    console.log(k)
    })

    【讨论】:

    • 谢谢哥们,但我试图模拟我从后端获取的 JSON 格式。我想使用Object.keys 来响应我的get 请求,而我的get 请求抛出404。如果不指定更具体的资源,我似乎无法对协议/主机/端口执行get 请求。
    • @JulioRodríguez [en.wikipedia.org/wiki/HTTP_404](404 表示您尝试访问的资源不存在)检查您的端点或尝试使用邮递员访问 api 并检查其是否工作正常
    • 谢谢哥们。看。我为 API 提供服务的服务器已启动并正在运行,如果我使用邮递员或 swagger 或仅使用浏览器,尝试访问 http:localhost:3000/datum1,
    【解决方案3】:

    如果您为此创建一个模型并将其映射到比。比访问键和值更容易 https://jvilk.com/MakeTypes/ 这是一个从 json 生成模型的好网站

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 2017-07-12
      相关资源
      最近更新 更多