私は、node.jsを使用するLINUXを初めて使用します。ちょうど2日目です。curlリクエストにはnode-curlを使用します。以下のリンクで、Getリクエストの例を見つけました。node-curlを使用したPostリクエストの例を誰かに教えてもらえますか?
https://github.com/jiangmiao/node-curl/blob/master/examples/low-level.js
setopt
cURLリクエストのPOSTオプションを指定するにはを使用する必要があります。最初に検討を開始する必要があるオプションはCURLOPT_POST
、およびCURLOPT_POSTFIELDS
です。からリンクされているlibcurlドキュメントnode-curl
から:
CURLOPT_POST
パラメータを1に設定すると、ライブラリに通常のHTTPPOSTを実行するように指示されます。これにより、ライブラリで「Content-Type:application/x-www-form-urlencoded」ヘッダーも使用されるようになります。(これは、これまでで最も一般的に使用されているPOSTメソッドです)。
CURLOPT_POSTFIELDSまたはCURLOPT_COPYPOSTFIELDSオプションのいずれかを使用して、投稿するデータを指定し、CURLOPT_POSTFIELDSIZEまたはCURLOPT_POSTFIELDSIZE_LARGEを使用してデータサイズを設定します。
オプションで、CURLOPT_READFUNCTIONおよびCURLOPT_READDATAオプションを使用してPOSTにデータを提供できますが、CURLOPT_POSTFIELDSをNULL以外に設定しないようにする必要があります。コールバックを使用してデータを提供する場合は、チャンク転送エンコーディングを使用してデータを送信するか、CURLOPT_POSTFIELDSIZEまたはCURLOPT_POSTFIELDSIZE_LARGEオプションを使用してデータのサイズを設定する必要があります。チャンクエンコーディングを有効にするには、適切なTransfer-Encodingヘッダーを渡すだけです。post-callback.cの例を参照してください。
CURLOPT_POSTFIELDS
... [this]は、HTTPPOST操作で投稿する完全なデータである必要があります。サーバーがデータを受信する方法でデータがフォーマットされていることを確認する必要があります。libcurlはそれを変換またはエンコードしません。ほとんどのWebサーバーは、このデータがURLエンコードされていると想定します。
このPOSTは、通常のapplication / x-www-form-urlencodedの種類です(このオプションを使用すると、libcurlはデフォルトでそのContent-Typeを設定します)。これは、HTMLフォームで最も一般的に使用されるものです。CURLOPT_POSTも参照してください。CURLOPT_POSTFIELDSを使用することは、CURLOPT_POSTを意味します。
ゼロバイトのPOSTを実行する場合は、CURLOPT_POSTFIELDSを明示的にゼロに設定する必要があります。CURLOPT_POSTFIELDSをNULLまたは ""に設定するだけで、指定した文字列の送信が事実上無効になるためです。libcurlは、代わりに、読み取りコールバックを使用してPOSTデータを送信すると想定します。
その情報を使用して、低レベルの例に次のオプションを追加して、POSTリクエストを実行できるようにする必要があります。
var fieldsStr = '{}';
curl.setopt('CURLOPT_POST', 1); // true?
curl.setopt('CURLOPT_POSTFIELDS', fieldsStr);
fieldsStr
サーバーが期待する形式に一致するように、の内容を微調整する必要があります。ドキュメントによると、データをurlエンコードする必要がある場合もあります。これは、この投稿encodeURIComponent
に従って使用するのと同じくらい簡単なはずです。