首页 文章

require.js POST请求发现web api返回“解析json时出错”

提问于
浏览
3

根据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}"

这对我来说很好 . 但是当我从nodejs应用程序运行以下代码时,使用 request 库,响应统计信息 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);
});

2 回答

  • 7

    而不是使用 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);
        });
    

    应该成功 .

  • 0

    根据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);
    });
    

相关问题