Azure机器学习REST API:没有正文

时间:2017-09-22 15:21:13

标签: rest azure machine-learning

我只是试着调用Azure创建的机器学习实验的REST API端点。我不断收到此错误消息:

{
    "error": {
        "code": "BadArgument",
        "message": "Invalid argument provided.",
        "details": [
            {
                "code": "RequestBodyInvalid",
                "message": "No request body provided or error in deserializing the request body."
            }
        ]
    }
}

我查看了他们的文档:https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-web-service-error-codes

所有它说的是我的身体是空的,我不知道它怎么可能是空的,这是我的代码:

router.post('/rating/new', function(req, res) {
    var postData = {
        "Inputs": {
            "input2":
                [
                    {
                        'Col1': "A11",
                        'Col2': "6",
                        'Col3': "A34",
                        'Col4': "A43",
                        'Col5': "1169",
                        'Col6': "A65",
                        'Col7': "A75",
                        'Col8': "4",
                        'Col9': "A93",
                        'Col10': "A101",
                        'Col11': "4",
                        'Col12': "A121",
                        'Col13': "67",
                        'Col14': "A143",
                        'Col15': "A152",
                        'Col16': "2",
                        'Col17': "A173",
                        'Col18': "1",
                        'Col19': "A192",
                        'Col20': "A201",
                        'Col21': "1",
                    }
                ],
        },
        "GlobalParameters":  {
        }
    };

    // Configure the request
    var options = {
        url: config.ML_PREDICTIVE.url,
        method: 'POST',
        headers: {
            'Content-Type':'application/json',
            'Authorization':('Bearer ' + config.ML_PREDICTIVE.apiKey)},
        form: postData
    }

    console.log(JSON.stringify(options));

    // Start the request
    request.post(options, function (error, response, body) {
        if(error){
            res.status(403).send(error);
        }
        if(response.statusCode != 200){
            res.status(403).send(response.body);
        }
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    })
});

我唯一看到的可能出错的是请求中的“形式”不被天蓝色视为身体,我尝试过“身体”也没有成功。

请帮忙!

1 个答案:

答案 0 :(得分:0)

根据您提供的代码,变量postData不是有效的JSON字符串。在发送POST请求之前,您需要使用JSON.stringify()方法将postData值转换为JSON字符串。