2017-02-19 11 views
2

nodeJSを介して同等のHTTP要求に作用するカールを変換する際に問題があります。リクエストモジュールを使用していますが、リクエストを行う際に間違ったことをしているようです。私はそれを実行すると、それは、任意のアイデアを、これをデバッグする方法は本当にわからない私に単純なNodeJS http要求はカールに相当します

body: Cannot POST /path 

を与えますか?

var data = JSON.stringify({ 
    'sender': { 
    'name': 'name', 
    'handle': 'handle' 
    }, 
    'subject': 'Title here', 
    'body': 'something something', 
    'metadata': {} 
}); 

var options = { 
    host: 'website.com', 
    path: '/path', 
    method: 'POST', 
    headers: { 
     'Content-Type': 'application/json', 
     'Authorization': 'Bearer <token>', 
     'Accept': 'application/json', 
     'Content-Length': Buffer.byteLength(data) 
    } 
}; 

var req = http.request(options, function(res) { 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
     console.log("body: " + chunk); 
    }); 
}); 
req.write(data); 
req.end(); 

以下は、上記のnodejsのために作成しようとしている同等のカールです。

curl --include \ 
    --request POST \ 
    --header "Content-Type: application/json" \ 
    --header "Authorization: Bearer <token>" \ 
    --header "Accept: application/json" \ 
    --data-binary "{ 
    \"sender\": { 
     \"name\": \"name\", 
     \"handle\": \"handle\" 
    }, 
    \"subject\": \"Title here\", 
    \"body\": \"something something\", 
    \"metadata\": {} 
    }" \ 
    'website.com/path" 

答えて

1

あなたはrequestライブラリとjsonパラメータを直接あなたのJSONデータを含めることができます。request options docから

var request = require('request'); 

var options = { 
    uri: 'http://website.com/path', 
    method: 'POST', 
    headers: { 
     'Authorization': 'Bearer <token>', 
     'Accept': 'application/json' 
    }, 
    json: { 
     'sender': { 
      'name': 'name', 
      'handle': 'handle' 
     }, 
     'subject': 'Title here', 
     'body': 'something something', 
     'metadata': {} 
    } 
}; 

var req = request(options, function(error, response, body) { 

    if (error) { 
     console.log(error); 
     return; 
    } 
    if (response.statusCode == 200) { 
     console.log(body); 
    } else { 
     console.log("receive status code : " + response.statusCode); 
    } 
}); 

JSONは - 値のJSON表現に体を設定し、 コンテンツを追加します-type:application/jsonヘッダー。さらに、 レスポンスボディをJSONとして解析します。

+0

ありがとう!私はドキュメントを理解するのが難しかったし、例を探しましたが、これは明らかにしたようです。私はデータが要求を定義した後に送信されなければならないと思った – iddles

+0

それが助けてくれてうれしい、あなたがそれが良い場合は答えを受け入れることができます –

関連する問題