如何使用Meteor.js向Domino Datalab的Rest API

时间:2016-05-28 23:53:57

标签: rest meteor

在我的服务器端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的文档尝试了几种不同的方法(同时使用dataparams选项),但这是我最好的尝试:

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开发人员来说,这可能很重要。

1 个答案:

答案 0 :(得分:3)

我是Domino的一名工程师,他最近参与了API端点功能。错误 您收到的消息表示您发送到我们服务器的JSON对象不包含 key"参数"。我不是Meteor的专家,但看起来你正在使用" params"你在哪里 应该使用"参数"在您的JSON有效负载中。 第9行可以改变......

{'data': {'params': [143]}}

{'data': {'parameters': [143]}}

如果我对您的代码的理解是正确的,那么该工作正常。

干杯!