繁体   English   中英

似乎无法从SeatGeek API获取数据

[英]Can't seem to fetch data from SeatGeek API

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

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...

我在执行提取请求时错了吗?

那就是您从then fetchResponse对象。

这个想法是Response是数据 ,要实际访问从API返回的数据,您需要读取Response流以完成操作。

要访问实际获取的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);
  });

注意新的then response.json()读取Response流直至完成,并实际上返回一个Promise,当该流用尽时,将使用JSON进行解析。 第一个then等待JSON,之后,将来自SeatGeek所取得的JSON在第二你自己的API的用户then

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM