【问题标题】:Can't seem to fetch data from SeatGeek API似乎无法从 SeatGeek API 获取数据
【发布时间】:2017-12-13 22:12:52
【问题描述】:

因此,当用户使用SeatGeek API 输入表演者的姓名时,我试图检索数据。目前,我只是在我的 URL 中输入查询字符串,以确保我的密钥正常工作。所以这个:

https://api.seatgeek.com/2/events?performers.slug=new-york-mets&client_id=MY_CLIENT_ID

有效,我可以获得包含纽约大都会队赛事信息的 JSON。

例子:

  "meta": {
    "total": 192,
    "per_page": 10,
    "page": 1,
    "took": 2,
    "geolocation": null
  },
  "events": [ARRAY OF EVENTS]

服务器端和获取数据:

在我的表单中,我正在向/events 发出 POST 请求:

app.post('/events', function(req, res) {
  let band = req.body.bandName;
  band = band.split(' ').join('-')

  fetch(`https://api.seatgeek.com/2/events?performers.slug=${band}&client_id=MY_CLIENT_ID`)
    .then(function(data){
      res.json(data);
    }).catch(function(error){
      console.log(error);
    });
});

当我点击 POST 请求时,我得到不同的数据。我什至不完全确定这是什么:

{
  "url": "https://api.seatgeek.com/2/events?performers.slug=new-york-mets&client_id=OTk1Mzg2MXwxNTEzMTkwMDUyLjI3",
  "status": 200,
  "statusText": "OK",
  "headers": {
...
 "body": {
"_readableState": {
  "objectMode": false,
  "highWaterMark": 16384,
  "buffer": {
    "head": null,
    "tail": null,
    "length": 0
  }, etc...

我是否执行了错误的获取请求?

【问题讨论】:

    标签: javascript api express


    【解决方案1】:

    这是您从then 中的fetch 返回的Response 对象。

    这个想法是Response 是一个数据,要真正访问从 API 返回的数据,您需要读取 Response 流以完成。 p>

    要访问实际提取的 JSON,您需要访问 Body.json,这是一种可用于响应的方法,因为它们实现了 Body 接口:

    fetch(`https://api.seatgeek.com/2/events?performers.slug=${band}&client_id=MY_CLIENT_ID`)
      .then(function(response) {
        return response.json();
      }).then(function(json) {
        res.json(json);
      }).catch(function(error) {
        console.log(error);
      });
    

    注意新的thenresponse.json() 读取 Response 流直到完成,并在流耗尽时返回一个用 JSON 解析的 promise。第一个 then 等待 JSON,然后在第二个 then 中将从 SeatGeek 获取的 JSON 发送给您自己的 API 用户。

    【讨论】:

    • Thaaaank 你,这很混乱。我只是假设 fetch 会返回一个承诺。
    • @user7496931 确实如此,但承诺将解析为响应对象,而不是实际数据,这就是您所看到的。那是因为你需要指明你想要数据的类型(JSON、纯文本、Blob 等)。
    • 明白了!再次感谢。
    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多