8

次のようなモジュール で PasteBin APIを使用して、新しいペーストを作成しようとしています。request

var request = require("request");
request({
    url : "http://pastebin.com/api/api_post.php",
    method : "POST",
    qs : {
        "api_dev_key" : MY_DEV_KEY,
        "api_option" : "paste",
        "api_paste_code" : "random text"
    }
},function(err,res,body){
    ...
});  

私の理解では、メソッドはPOSTクエリ文字列パラメーターが提供されているため、オブジェクトの値は本体にペアqsとして格納されます。key=value(参照: HTTP POST リクエストでパラメーターはどのように送信されますか? )

ただし、Bad API request, invalid api_optionPasteBin からは a が返されます。だから私curlは自分の端末からのリクエストを次のように編集しました:

curl -X POST "http://pastebin.com/api/api_post.php" -d "api_dev_key=[MY_DEV_KEY]&api_option=paste&api_paste_code=some+random+text"  

そしてこれはうまくいきました。

したがって、これは 2 つの質問につながります。

  1. POSTリクエストが作成されて提​​供されたときに、パラメータはどの程度正確に送信qsされますか?
  2. requestモジュールだけを使用して URL エンコードされた本文を送信するにはどうすればよいですか?
4

2 に答える 2

12

qsオブジェクト内のキーの名前を変更formします。qsキーは、URL の末尾にクエリ文字列を指定するためのものです (例: GET 要求の場合) 。キーは、フォーム URL エンコードされたリクエスト ボディを指定するためのformものです (たとえば、POST リクエストの場合)。

于 2015-07-27T17:03:54.687 に答える