ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejs httpリクエストに関連する概要の紹介

Nodejs httpリクエストに関連する概要の紹介

不言
不言転載
2019-04-01 11:50:571862ブラウズ

この記事は、nodejs の http リクエストについての概要と紹介を提供します。一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。

ノードによって提供される http モジュールを介して、それが提供する get() および request() メソッドを通じて http リクエストを開始できます。get() は、get の開始を容易にする request() メソッドのカプセル化です。 post リクエストを実装するには、request() メソッドをカプセル化する必要があります。

request() メソッド

let req = http.request("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});
req.end();//必须调用end()方法结束请求
request() メソッドを使用して http リクエストを開始する場合、request() メソッドはリクエスト オブジェクトと、返されたリクエストを返すことに注意してください。 end() メソッドは、リクエスト アクションが完了したことを示します。そうでない場合、リクエストは中断され、リクエスト アクションの完了を待ちます。

request() メソッドのパラメータの問題:

request() の最初のパラメータは URL アドレスを直接指定でき、2 番目のパラメータはリクエストが完了してサーバー応答を受信した後のコールバック関数です。コールバック関数 request() の最初のパラメータは、リクエスト データ構成オブジェクトにすることができます。2 番目のパラメータは、リクエストが完了し、サーバーの応答を受信した後のコールバック関数です。コールバック関数のパラメータは 1 つだけで、それが応答オブジェクトですres
let req = http.request("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});
req.end();//必须调用end()方法结束请求
.
request() メソッドは、URL アドレスとリクエスト データ構成オブジェクトを同時に渡すことはできないことに注意してください。2 つのうちの 1 つだけを選択できます。つまり、request() メソッドです。 2 つのパラメータのみを渡すことができます

get () メソッド

let req = http.request({hostname:"www.baiduc.com",port:80}, (res) =>{
    console.log(res.statusCode);
});
req.end();//必须调用end()方法结束请求
get() メソッドが http リクエストを開始すると、get() メソッドはリクエスト オブジェクトも返しますが、その必要はありませんこの request オブジェクトを通じて end() メソッドを呼び出すこと。これは request() と同じです。メソッドが異なります。

get() メソッドのパラメータの問題:

get() メソッドと request() メソッドのパラメータは同じです。つまり、end() を呼び出す必要はありません。方法。

リクエスト タイムアウトを設定するメソッド

リクエスト タイムアウトを設定するには、get() または request() メソッドによって返されるリクエスト オブジェクトの setTimeout() メソッドを使用できます。
let req = http.get("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});

1 ミリ秒経過しても応答が受信されない場合、setTimeout コールバック関数がトリガーされ、この時点でリクエストを直接終了できます。

2.

let req = http.get("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
});
 req.setTimeout(1,()=>{
     console.log(`请求超时了`);
     req.abort();//终止请求
 });

応答データを取得する

get() および request() のように、タイマーを設定して自分で実装することもできます。メソッドのコールバック関数 応答オブジェクト res には応答データが含まれていないため、応答データを取得したい場合は、応答オブジェクトを通じてデータをリッスンし、イベントを終了する必要があります。

let requestTimer = null;
let req = http.get("http://www.baidu.com", (res) =>{
    console.log(res.statusCode);
    if(res.statusCode === 200){
        clearTimeout(requestTimer);//请求超时之前完成,清除超时定时器
    }
});

requestTimer  = setTimeout(() => {
     req.emit("timeout", {"msg": "请求超时了"});//如果请求超时了则发送timeout事件
}, 1000);

req.on("timeout",(msg) => {//监听timeout事件并终止请求
    console.log(`收到timeout事件!`);
    req.abort();
    console.log(`终止请求`);
});

[関連する推奨事項: node.js ビデオ チュートリアル ]

以上がNodejs httpリクエストに関連する概要の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。