在我的服务器端Meteor.js方法中,我正在尝试正确地向Domino Data Lab(DDL)Rest API发出请求。
DDL提供了一个平台,可以通过REST API调用数据科学模型。他们关于这个API的文档在这里:
http://support.dominodatalab.com/hc/en-us/articles/204173149-API-Endpoints-Model-Deployment
但是,我怀疑文档是否有用,因为我认为有经验的Meteor开发人员会在CURL或Python中看到请求示例,并知道如何将params正确地转换为DDL正在寻找的JSON格式。
Domino Datalab提供了4种方法的说明,但不适用于Meteor.js。我将发布Curl和Python的示例:
实施例
CURL请求
curl -v -X POST \
https://app.dominodatalab.com/MYURL \
-H 'Content-Type: application/json' \
-H 'X-Domino-Api-Key: YOUR_API_KEY' \
-d '{"parameters": [ "FOO", "BAR", "ETC"]}'
Python请求
import requests
response =
requests.post("https://app.dominodatalab.com/MYURL",
headers = {
"X-Domino-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
json = {
"parameters": ["FOO", "BAR", "ETC"]
}
)
print(response.status_code)
print(response.headers)
print(response.json())
我根据Meteor的文档尝试了几种不同的方法(同时使用data
和params
选项),但这是我最好的尝试:
Meteor.methods({
score_app: function(){
var test = HTTP.call("POST", "https://app.dominodatalab.com/MYURL",
{ headers: {
"Content-Type": "application/json",
"X-Domino-Api-Key": "YOUR_API_KEY"
},
// This is where the problem is. Have tried multiple syntax versions and tried using the `params`options for the HTTP call instead of `data`
data: {'params': [143]
}
},
function (error, result) {
// The syntax below should be if not an error, log the result (for testing etc, otherwise, log "http post error". I may have incorrectly switched this around, but the original version I got from an online example had it the console.log statements in the reverse order.
if (!error) {
console.log(result);
} else{
console.log("http post error");
};
});
}
});
我一直在Meteor文档中使用此条目来正确地将参数作为JSON对象发送: http://docs.meteor.com/api/http.html
与Data Domino Lab(DDL)的连接正确,但它无法正确识别参数,因为请求未发送DDL所需的JSON格式的参数。
result: 'You must provide a JSON object in your request body
with a parameters key containing an array of parameters.' } }
我正在使用DDL免费计划,但我会通过电子邮件将这个问题的链接发送给他们的技术支持。这是一个利基问题,但对于未来希望链接到DDL中的数据科学模型的Meteor.js开发人员来说,这可能很重要。
答案 0 :(得分:3)
我是Domino的一名工程师,他最近参与了API端点功能。错误 您收到的消息表示您发送到我们服务器的JSON对象不包含 key"参数"。我不是Meteor的专家,但看起来你正在使用" params"你在哪里 应该使用"参数"在您的JSON有效负载中。 第9行可以改变......
{'data': {'params': [143]}}
到
{'data': {'parameters': [143]}}
如果我对您的代码的理解是正确的,那么该工作正常。
干杯!