nodejsリクエストプロセス

PHPz
リリース: 2023-05-17 09:19:07
オリジナル
530 人が閲覧しました

Node.js は、効率的でスケーラブルな Web アプリケーションの構築に使用できる、イベント駆動型のノンブロッキング I/O モデルに基づくサーバーサイド JavaScript 環境です。 Node.js のリクエスト処理プロセスでは、HTTP サーバーとルーティングの実装にそれぞれ焦点を当てる必要があります。

HTTP サーバー

Node.js の HTTP サーバー モジュール http モジュールは、HTTP サーバーを作成するための createServer() メソッドを提供します。クライアントがサーバーにリクエストを送信するたびに、このメソッドはサーバー インスタンスを返し、このインスタンスを監視して応答できるようにします。

HTTP サーバーの作成

const http = require('http');

http.createServer((request, response) => {
  // 请求处理
}).listen(8080);
ログイン後にコピー

HTTP サーバーのリクエスト イベント

ユーザーが HTTP リクエストをサーバーに送信するたびに、サーバーは http.IncomingMessage オブジェクトとトリガーを自動的に生成します。 request イベント。これを通じて HTTP リクエストを受信して​​処理できます。 http.IncomingMessage オブジェクトには、リクエスト パス、リクエスト メソッド、リクエスト ヘッダー、リクエスト本文など、リクエストによって運ばれるすべてのデータも含まれます。

const http = require('http');

http.createServer((request, response) => {
  // request事件
  request.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  // 处理请求
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World
');
}).listen(8080);
ログイン後にコピー

ルーティング

ルーティングとは、URL リクエスト パスに従って対応するプロセッサを照合することを指し、それによってさまざまな URL アクセス方法と効果を実現します。

ルーティングの実装

JavaScript オブジェクトを使用して、さまざまな URL に対応するプロセッサ メソッドを保存し、http サーバーのリクエスト イベント内のリクエスト パスに従ってオブジェクトを照合できます。処理に対応するプロセッサ メソッドを見つけます。

const http = require('http');

const urlHandler = {
  '/': function(request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World
');
  },
  '/about': function(request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('About page
');
  }
};

http.createServer((request, response) => {
  const path = request.url;

  if (urlHandler[path]) {
    urlHandler[path](request, response);
  } else {
    response.writeHead(404, {'Content-Type': 'text/plain'});
    response.end('404 Not Found
');
  }
}).listen(8080);
ログイン後にコピー

上記は、Node.js のリクエスト処理プロセスの単純な実装です。HTTP サーバーとルーティング モジュールの共同作業を通じて、さまざまな興味深い Web アプリケーションを実装するための効率的でスケーラブルな Web サーバーを構築できます。 .プログラム。

以上がnodejsリクエストプロセスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート