我只是试着调用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)
}
})
});
我唯一看到的可能出错的是请求中的“形式”不被天蓝色视为身体,我尝试过“身体”也没有成功。
请帮忙!
答案 0 :(得分:0)
根据您提供的代码,变量postData
不是有效的JSON字符串。在发送POST请求之前,您需要使用JSON.stringify()
方法将postData
值转换为JSON字符串。