require.js POST 请求以发现返回“解析 json 错误”的 web api
Posted
技术标签:
【中文标题】require.js POST 请求以发现返回“解析 json 错误”的 web api【英文标题】:require.js POST request to spotify web api returning "Error parsing json" 【发布时间】:2014-08-26 17:06:00 【问题描述】:根据Spotify Web API Create Playlist,一旦授权成功,带有 access_token 和其他一些参数的 POST 应该为用户创建一个新的播放列表。 链接中的示例 CURL 命令
curl -X POST "https://api.spotify.com/v1/users/wizzler/playlists"
-H "Authorization: Bearer your access token"
-H "Content-Type: application/json" --data "\"name\":\"A New Playlist\", \"public\":false"
这对我来说很好。但是当我使用request
库从nodejs 应用程序运行以下代码时,响应统计为Error parsing json
。
我在这里缺少什么?
更新:我尝试根据 request.js 示例将 data
更改为 form
。我还尝试删除 stringify 调用,并直接传递对象。错误仍然存在。
var request = require('request');
var authOptions1 =
url: 'https://api.spotify.com/v1/users/' + username + '/playlists',
data: JSON.stringify(
'name': name,
'public': false
),
dataType:'json',
headers:
'Authorization': 'Bearer ' + access_token,
'Content-Type': 'application/json',
;
console.log(authOptions1);
request.post(authOptions1, function(error, response, body)
console.log(body);
);
【问题讨论】:
删除JSON.stringify()
;它应该为您将 data
属性转换为 JSON。
试过这个。这是行不通的。同样的错误
【参考方案1】:
不要使用data
,而是使用body
:
var request = require('request');
var authOptions1 =
url: 'https://api.spotify.com/v1/users/' + username + '/playlists',
body: JSON.stringify(
'name': name,
'public': false
),
dataType:'json',
headers:
'Authorization': 'Bearer ' + access_token,
'Content-Type': 'application/json',
;
request.post(authOptions1, function(error, response, body)
console.log(body);
);
应该可以的。
【讨论】:
【参考方案2】:根据https://github.com/mikeal/request#requestoptions-callback
var authOptions1 =
url: 'https://api.spotify.com/v1/users/' + username + '/playlists',
form: // data = form
'name': name,
'public': false
,
json: true, // dataType: json = json: true
headers:
'Authorization': 'Bearer ' + access_token,
'Content-Type': 'application/json',
;
request.post(authOptions1, function(error, response, body)
console.log(body);
);
【讨论】:
您使用快速 JSON 解析器吗?var bodyParser = require('body-parser'); app.use(bodyParser.json())
以上是关于require.js POST 请求以发现返回“解析 json 错误”的 web api的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中发送 post 请求以发现 api 的问题
对 Wordpress REST API 的 POST 请求返回一个空对象