【问题标题】:TypeScript fetch data from APITypeScript 从 API 获取数据
【发布时间】:2019-08-09 23:37:19
【问题描述】:

我希望下面的代码能够从我设置的简单 API 中获取 JSON 数据。

export class FaqFakeDb
{ 
    public static data = fetch('https://#######.co.uk/api/faq/');
}

这是一个常见问题页面,旨在从 API 中提取数据。我是 typescript 和 Angular 的新手,如果我犯了一个简单的错误,请原谅我。

我希望它像这样运行:

export class FaqFakeDb
{
    public static data = [  
        {  
           "id":"1",
           "question":"test1",
           "answer":"test1"
        },
        {  
           "id":"2",
           "question":"test1",
           "answer":"test1"
        },
        {  
           "id":"3",
           "question":"test1",
           "answer":"test1"
        }
     ];
  }

任何帮助都会让我非常感激:)

【问题讨论】:

  • 你好像根本没有使用 Angular,你为什么要使用标签?
  • 对不起,项目是用 angular 构建的,但这个特定的脚本不是,我会删除它。
  • 如果你在项目中使用 Angular,为什么不使用他们的 HTTP 模块而不是 fetch API 呢?
  • TypeScript 对我来说比 Angular 更熟悉,这就是模板的设置方式,所以我现在只是想让它以这种方式工作,你知道我做错了什么吗?跨度>

标签: json typescript api


【解决方案1】:

fetch 返回一个承诺,所以data 将是一个承诺。任何时候你想访问数据都必须使用 async/await 或 .then 或其他东西来处理 Promise。如果您的 API 调用失败,您也没有任何错误处理。

你可以如何处理的一个例子是:

async ngOnInit() {
  try {
    const response = await FaqFakeDb.data;
    this.quesitons = await response.json();
  } catch {
    // fetch encountered an error; you can handle it here.
  }
}

但是,我建议您改用 Angular 内置的 HttpClientModule 并根据需要(在需要它的组件中)而不是在声明任意类时进行 API 调用。

【讨论】:

  • 感谢您的回答,API url 应该放在哪里?抱歉,我对打字稿很陌生。
  • 你会把它放在哪里?
  • 将从 API 请求 JSON,但我没有看到在您的示例中放置 JSON url 的地方,谢谢
  • @DanielFaulkner 你已经把它放在了FaqFakeDb。我的代码应该适用于您已有的课程
  • 能否用我的代码显示示例,我似乎无法正常工作,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2023-02-22
  • 2021-07-20
  • 2017-05-31
  • 2018-05-11
  • 2019-01-08
相关资源
最近更新 更多