[解決済み】Node.js ExpressでのHTTP GETリクエスト
2022-04-09 10:05:55
質問
Node.jsまたはExpress.jsからHTTPリクエストを行うにはどうすればよいですか?私は他のサービスに接続する必要があります。私は、呼び出しが非同期であり、コールバックにリモートサーバーの応答が含まれていることを期待しています。
どのように解決するのですか?
以下は、私のサンプルからのコードの一部です。これは非同期で、JSONオブジェクトを返します。 どのような形式のGETリクエストでも可能です。
例えば、チャンクを連結する代わりに配列に入れ、それを結合するなど、より最適な方法があることに注意してください(あくまでサンプルです)。これで正しい方向に進めるといいのですが。
const http = require('http');
const https = require('https');
/**
* getJSON: RESTful GET request returning JSON object(s)
* @param options: http options object
* @param callback: callback to pass the results JSON object(s) back
*/
module.exports.getJSON = (options, onResult) => {
console.log('rest::getJSON');
const port = options.port == 443 ? https : http;
let output = '';
const req = port.request(options, (res) => {
console.log(`${options.host} : ${res.statusCode}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
output += chunk;
});
res.on('end', () => {
let obj = JSON.parse(output);
onResult(res.statusCode, obj);
});
});
req.on('error', (err) => {
// res.send('error: ' + err.message);
});
req.end();
};
のようなオプション・オブジェクトを作ることで呼び出される。
const options = {
host: 'somesite.com',
port: 443,
path: '/some/path',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
そして、コールバック関数を提供すること。
例えば、あるサービスでは、上記のRESTモジュールを要求して、こんなことをします。
rest.getJSON(options, (statusCode, result) => {
// I could work with the resulting HTML/JSON here. I could also just return it
console.log(`onResult: (${statusCode})\n\n${JSON.stringify(result)}`);
res.statusCode = statusCode;
res.send(result);
});
アップデイト
もし、あなたが
async
/
await
(線形、コールバックなし)、プロミス、コンパイル時のサポート、インテリセンスなど、それに見合った軽量のHTTPおよびRESTクライアントを作成しました。
関連
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み] HTTP POST Web リクエストの作成方法
-
[解決済み] Node.js + Nginx - 今度は何?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】別のjsファイル内でJavaScriptの関数を呼び出す
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み】 \u003C とは何ですか?
-
[解決済み】module.exports "モジュールが定義されていません"
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする