[英]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
fetch
的Response
对象。
这个想法是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.