ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejsリクエストのカプセル化の言い訳
フロントエンドとバックエンドの分離が普及するにつれ、フロントエンド エンジニアは通信のためにバックエンドとのインターフェースを必要とすることがますます増えています。このプロセス中に、多くのエンジニアは、ネイティブ XMLHttpRequest またはフェッチを直接使用してネットワーク リクエストを行う場合に多くの問題があることに気付きました。したがって、多くのフロントエンド チームは現在、サードパーティのリクエスト ライブラリを使用してインターフェイス リクエストを行っています。中でもNode.jsで開発されたリクエストリクエストライブラリも人気が高いです。
この記事では、Node.js のリクエスト リクエスト ライブラリを使用してインターフェイス リクエストをカプセル化し、フロントエンド エンジニアがインターフェイスと通信するのをより便利かつ高速にする方法を紹介します。
リクエスト ライブラリを使用する前に、最初にリクエスト ライブラリをインストールする必要があります。これは、コマンド ラインで npm コマンドを使用してインストールできます。
npm install request --save
次に、リクエスト ライブラリを使用して、いくつかの一般的なリクエストを送信します。まず、request.get() メソッドを使用して GET リクエストを送信する必要があります。
const request = require('request'); request.get('https://api.github.com/', function(error, response, body) { if (!error && response.statusCode == 200) { console.log(body); } });
このコードでは、GitHub の API にアクセスして、ホームページのコンテンツを取得します。まず、request.get() メソッドを使用して GET リクエストを送信し、GitHub API アドレスをパラメーターとして渡します。リクエストをサーバーに送信し、サーバーの応答を待ちます。
サーバーが応答すると、リクエスト ライブラリは応答情報をコールバック関数に渡します。パラメータ error はリクエスト処理中にエラーがあったかどうかを示し、response はサーバの応答ヘッダ情報を示し、body はサーバの応答の具体的な内容を示します。
このコードでは、まず if (!error && response.statusCode == 200) を使用してエラーが発生したかどうかを判定し、エラーがなければ応答内容を出力します。
次に、POST リクエストを送信します。
const request = require('request'); request.post({ url: 'https://httpbin.org/post', form: { name: '张三', age: 18 } }, function(error, response, body) { if(!error) { console.log(body); } });
このコードでは、request.post() メソッドを通じて POST リクエストを送信し、リクエスト アドレスとリクエスト パラメータをオブジェクトの形式で渡します。 form パラメータは POST リクエストのフォーム データを表し、ここでは名前と年齢のフィールドを渡します。
同様に、サーバーが応答すると、Request ライブラリは応答情報をコールバック関数に渡しますが、error と response.statusCode を判断することでリクエストが成功したかどうかを判断し、応答内容を出力することもできます。
今日のフロントエンドとバックエンドの分離開発では、非常に一般的なリクエスト方法は JSON データを送信することです。以下は、JSON データを送信するためのサンプル コードです。
const request = require('request'); const data = { name: '李四', age: 20 }; const options = { method: 'POST', url: 'https://httpbin.org/post', json: true, body: data }; request(options, function(error, response, body) { if(!error) { console.log(body); } });
このコードでは、まず、送信される JSON データを表すデータ オブジェクトを定義します。次に、オプション パラメーターを使用してリクエストのいくつかのパラメーターを構成しました。
request() メソッドでは、options パラメータを渡します。前のサンプル コードと同様、サーバーが応答すると、Request ライブラリは応答情報をコールバック関数に渡します。
インターフェイスリクエストを行う過程で、ネットワーク接続タイムアウト、リクエストアドレスが存在しないなど、多くのエラーが発生することは避けられません。以下は、エラー処理のサンプル コードです。
const request = require('request'); const data = { name: '李四', age: 20 }; const options = { method: 'POST', url: 'https://httpbin.org/post', json: true, body: data, timeout: 5000 // 设置请求超时时间 }; request(options, function(error, response, body) { if(error) { console.log('请求发生错误:', error); } else { if(response.statusCode == 200) { console.log('响应内容:', body); } else { console.log('请求失败,状态码:', response.statusCode); } } });
このコードでは、最初に、リクエストのタイムアウトを示すために options.timeout パラメータを設定し、リクエストが長すぎてページがスタックすることを回避します。応答。エラーが発生した場合は、コールバック関数で console.log() を使用してエラー メッセージを出力します。エラーがなければ応答ステータスコードを判定し、ステータスコードが200の場合は応答内容を出力します。それ以外の場合は、リクエスト失敗のステータス コードを出力します。
リクエスト ライブラリを使用してインターフェイス リクエストを作成する場合、共通のリクエスト メソッドをカプセル化してコードの過剰な繰り返しを避けることができます。以下は、リクエスト インターフェイス関数をカプセル化するサンプル コードです。
const request = require('request'); function requestApi(url, method, data) { const options = { method: method, url: url, json: true, timeout: 5000 }; if(method == 'GET') { options.method = 'GET'; } else if(method == 'POST') { options.method = 'POST'; options.body = data; } else if(method == 'PUT') { options.method = 'PUT'; options.body = data; } else if(method == 'DELETE') { options.method = 'DELETE'; options.body = data; } return new Promise(function(resolve, reject) { request(options, function(error, response, body) { if(error) { reject(error); } else { if(response.statusCode == 200) { resolve(body); } else { reject(response.statusCode); } } }); }); }
このコードでは、最初に requestApi() 関数を定義します。これには 3 つのパラメータが含まれます。
関数では、リクエストのいくつかの構成パラメータを保存するためのオプション オブジェクトを定義します。さまざまなリクエスト メソッドに応じて、options.method の値と options.body の値を設定します。
次に、非同期処理には Promise を使用します。 request() メソッドのコールバック関数では、resolve() を使用して応答コンテンツを渡し、reject() を使用してエラー メッセージとステータス コードを渡します。 Promise オブジェクトの then() メソッドと catch() メソッドを使用すると、データをリクエストした後に対応する処理を実行できます。
Node.js の Request ライブラリを使用してインターフェイス リクエストを行うのは、非常に便利で迅速な方法です。これにより、ネイティブ XMLHttpRequest の使用または直接フェッチによって発生するいくつかの問題を回避でき、いくつかの一般的なエラーも処理できます。実際のニーズに応じて一般的なリクエストを関数にカプセル化し、プロジェクト内で呼び出すことで、コードをより簡潔で理解しやすくすることができます。
以上がNodejsリクエストのカプセル化の言い訳の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。