我将如何使此代码从URL中提取JSON,而不是将其包含在脚本中

时间:2019-03-20 14:01:32

标签: json ajax typescript api server

我想使您在下面的脚本中看到的JSON从API中提取,而不是放在脚本本身中。我无法终生解决。我是TypeScript的新手,所以如果我听起来像个菜鸟,请原谅我:)

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

我已经尝试了一切,但似乎无法正常工作。任何帮助我将不胜感激。

p.s。希望解答的任何人都可以包括我的代码或提供完整的脚本,因为我对Typescript的结构还不太熟悉,谢谢。

2 个答案:

答案 0 :(得分:0)

您需要设置服务器的路由,然后该路由服务该JSON以响应GET请求。

如果您想练习,我建议使用已经具有“伪造”数据的公共API。

www.swapi.co是一个示例,返回与StarWars相关的数据。

答案 1 :(得分:0)

您可以使用Express快速地编写API。这是设置将为您的数据提供服务的快捷简便的方法:

  1. 导航到/where/you/want/your/server/to/be(选择一个目录,该目录将托管NPM项目)
  2. 启动一个NPM项目:npm init -y
  3. 安装快递:npm install express
  4. ./data.json中,粘贴您的数据([{"id": "1", "question":...
  5. server.js中,对将通过HTTP服务您的数据的服务器进行编码:
    const express = require('express');

    // create an express server
    const app = express();

    // serves the 'data.json' at the path '/data'
    app.get('/data', (req, res) => {
      res.sendFile(`${__dirname}/data.json`);
    });

    // launches the server on localhost, port 8080
    app.listen(8080, () => {
      console.log('Server listening on http://localhost:8080');
    })

就是这样!您可以导航到localhost:8080/data上的浏览器,然后看到返回的数据。另外,您可以使用JavaScript以编程方式获取数据:

fetch('http://localhost:8080/data')
  .then(resp => resp.json()) // parse the JSON data
  .then(data => console.log('received data:', data)); // logs the data