2016-05-28 2 views
0

サーバー側のMeteor.jsメソッドで、Domino Data Lab(DDL)のRest APIに正しくリクエストしようとしています。Meteor.jsで正しいHTTP Post要求をDomino DatalabのRest APIに送信する方法

DDLは、REST APIを介してデータサイエンスモデルを呼び出すためのプラットフォームを提供します。このAPIの彼らのドキュメントはここにある:私はドキュメントを疑う、

http://support.dominodatalab.com/hc/en-us/articles/204173149-API-Endpoints-Model-Deployment

しかし、私は経験豊富な流星の開発者がCURLやPythonでの要求の例を参照してに正しくのparamsを取得する方法を知っているだろうと思うので、便利ですDDLが探しているJSON形式

Domino Datalabには4つの方法の説明がありますが、Meteor.jsでは使用できません。私はいくつかを試してみた

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()) 

:私はカールとPythonの例を投稿します異なる方法(dataparamsオプション)流星のドキュメントに基づいていますが、ここでは私の最高の試みである:私が正しくJSONオブジェクトとしてパラメータを送信するために流星のドキュメントで、このエントリを使用してきた

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"); 
    }; 
    }); 
    } 
}); 

http://docs.meteor.com/api/http.html

データ・ドミノ・ラボ(DDL)への接続は正しく行われましたが、DDLが必要とするJSON形式のパラメータを要求が送信していないため、パラメータが正しく認識されません。

result: 'You must provide a JSON object in your request body 
with a parameters key containing an array of parameters.' } } 

私はDDLフリープランを採用していますが、この質問へのリンクは技術サポートにメールでお知らせします。これはニッチな問題ですが、将来的にMeteor.js開発者がDDLのデータサイエンスモデルにリンクしたいと考えることが重要になります。

答えて

3

私は最近、APIエンドポイント機能を開発したDominoのエンジニアの一人です。エラー は、サーバーに送信するJSONオブジェクトに キーの「パラメータ」が含まれていないことを意味します。私はMeteorの専門家ではありませんが、 がJSONペイロードに "parameters"を使用する "params"を使用しているようです。

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

にライン9の周囲 を変更することができます...

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

あなたのコードの私の理解が正しければ、それは正常に動作します。

乾杯!

関連する問題