javascript - Spotify API - JSON 返回未定义,但我仍然可以 console.log() 它
问题描述
我正在尝试使用 Spotify 的 Web Player API 来访问值“device_id”。根据文档,我进行的服务器端 API 调用应该返回一个“包含设备对象的 json 有效负载”,如下所示:
这是我的 API 调用:
app.get('/c+party', (req,res)=>{
const access_token = req.query.access_token;
var device_id;
var options = {
url: 'https://api.spotify.com/v1/me/player/devices',
headers: {
'Authorization': 'Bearer '+ access_token,
'Content-Type':'application/json'
},
json:true
};
request.get(options, (err,response,body) => {
const device_id = body.devices[0].id;
res.json(device_id);
});
});
它应该返回:
{
"devices" : [ {
"id" : "5fbb3ba6aa454b5534c4ba43a8c7e8e45a63ad0e",
"is_active" : false,
"is_private_session": true,
"is_restricted" : false,
"name" : "My fridge",
"type" : "Computer",
"volume_percent" : 100
} ]
}
编辑,这是错误:
const device_id = body.devices[0].id;
^
TypeError: Cannot read property 'id' of undefined
at Request._callback (C:\code\music-room\src\server.js:69:43)
at Request.self.callback (C:\code\music-room\node_modules\request\request.js:185:22)
at Request.emit (events.js:223:5)
at Request.<anonymous> (C:\code\music-room\node_modules\request\request.js:1154:10)
at Request.emit (events.js:223:5)
at IncomingMessage.<anonymous> (C:\code\music-room\node_modules\request\request.js:1076:12)
at Object.onceWrapper (events.js:312:28)
at IncomingMessage.emit (events.js:228:7)
at endReadableNT (_stream_readable.js:1185:12)
at processTicksAndRejections (internal/process/task_queues.js:81:21)
我可以通过 console.log(body) 查看所需的输出,但实际上无法访问我想要的值。当我的代码运行时,我收到 body.devices 未定义的错误。对修复有任何帮助吗?我是 express.js 的新手 - 我的路由是否搞砸了?
另一个编辑:我尝试了 res.json(body)... 我的服务器正在响应一个空的“设备”对象数组。
解决方案
您实际上是从您的 API 发回一个空响应。就是res.end()
这样。我不完全确定 Spotify API 响应的内容是什么,但如果您可以在body
变量中看到正确的 JSON 值,您可以使用res.json(...)
而不是res.end()
这样:
request.get(options, (err,response,body) => {
// Assuming that the body variable contains the correct data
const device_id = body.devices[0].id;
res.json(device_id);
});
推荐阅读
- java - 尝试上传文件,数组遇到困难
- python - 如何使用 Pandas 分析来分析大型数据集?
- php - 使用 PHP oAuth2 在 Freeagent 中创建发票时出现问题
- android - 构建 gradle 错误中的问题:没有这样的属性:类的 GradleVersion:JetGradlePlugin
- javascript - 如何使用 react-apollo 访问 json 数组的值?
- angular - 订阅后构建表单给出“期望表单组实例”错误
- sql - 检查连续值,然后做出决定
- wordpress - 在 localhost 上出现 wordpress 分页错误,但在 dev 上工作正常
- websphere - Websphere Liberty 如何让 MDB 监听器工作?
- c - 什么是 *ABS* 部分以及何时使用?