2017-03-27 3 views
0

さて、私はかなりの間これで苦労しました。私は動作するはずのカールコマンドを持っています。私はカールに慣れていないので、それをノードに「翻訳」します。しかし、それは動作しません。ここにカール線があります。POSTリクエストノードjs

私はそれがこのようになりますノードに翻訳した
curl -X POST --header 'Content-Type: application/json' --header 'token: XXXXXX' -d '[ \ 
    { \ 
    "id": "eh", \ 
    \ 
    "kind": "goods", \ 
    "data": {} \ 
    } \ 
]' 'http://localhost:5000/api/article' 

var request = require('request'); 

var dataString = '[ \ 
    { \ 
    "id": "eh", \ 
    \ 
    "kind": "goods", \ 
    "data": {} \ 
    } \ 
]'; 

var options = { 
    url: 'http://localhost:5000/api/article', 
    method: 'POST', 
    body: dataString 
}; 

function callback(error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body); 
    } 
} 

request(options, callback); 

私が取得エラーメッセージが

ある新しいTypeError例外を投げる( '最初の引数は文字列でなければなりませんかバッファ');

誰かが間違っていることを教えてもらえますか?おかげrequestドキュメントから

+0

出力とはあなたのコードの?何が起こると思いますか? – markusthoemmes

+0

throw new TypeError( '最初の引数は文字列またはバッファでなければなりません'); –

+0

このエラーは、どの行に表示されますか?¿ – Borjante

答えて

1

体 - PATCH、POSTとPUT要求のためのエンティティボディ。バッファ、文字列、またはReadStreamでなければなりません。 jsonがtrueの場合、bodyはJSON直列化可能オブジェクトでなければなりません。

ここには2つのオプションがあります。

これは、送信したい体の場合:

var options = { 
    url: 'http://localhost:5000/api/article', 
    method: 'POST', 
    body: data, 
    json: true 
}; 

それとも、それを送信する前に、あなたのデータ配列を文字列化することができます:

var data = [{ 
    "id": "eh", 
    "kind": "goods", 
    "data": {} 
}]; 

あなたはjson: trueオプションを渡す行うことができます

var options = { 
    url: 'http://localhost:5000/api/article', 
    method: 'POST', 
    body: JSON.stringify(data)  
}; 
+0

さて、私はまっすぐにそれをcoppied知っている、私はacctualコード内のすべてのバックスラッシュを削除しました。 –

+0

Hmmm。これにより、すべてのエラーメッセージが削除されましたが、正常にポストされません。私が記事とコンソールログを "取得"しようとすると "null"になるだけです –

+0

あなたはPOSTリクエストを実行する方法を尋ねました。私はあなたに答えました。あなたの問題は、リクエストではなく記事をDBに保存する方法に関連しているように見えます。記事が保管されているかどうかDBで確認しましたか? – pietrovismara

0
var dataString = [ 
    { 
    "id": "eh", 
    "kind": "goods", 
    "data": {} 
    } 
]; 

var options = { 
    url: 'http://localhost:5000/api/article', 
    method: 'POST', 
    body: dataString 
}; 

function callback(error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body); 
    } 
} 

//request(options, callback); 
enter code here 
request.post({url:options.url, formData: :options.body}, callback); 
関連する問題