Node.js を使用してリクエストを処理する方法とテクニック

PHPz
リリース: 2023-04-06 09:27:49
オリジナル
1000 人が閲覧しました

Node.js は JavaScript をベースにしたサーバーサイド プログラミング言語であり、その登場により Web 開発がより迅速かつ効率的になりました。 Node.js の主な利点は、I/O 操作を処理できることと、適応性、拡張性、使いやすさです。この記事では、Node.js を使用してリクエストを処理する方法とテクニックについて説明します。

1. Node.js の HTTP モジュール

Node.js の HTTP モジュールは、HTTP リクエストを処理する方法を提供し、シンプルで効率的な Web サーバーを迅速に構築するのに役立ちます。 HTTP モジュールには、いくつかの重要なクラス、関数、イベントが含まれています。

  1. http.createServer() - HTTP サーバー インスタンスを作成します。
  2. request - クライアントが HTTP リクエストを開始すると自動的に作成されるリクエスト オブジェクト。
  3. response - HTTP 応答をクライアントに送信するために使用される応答オブジェクト。
  4. listen() - ポートをリッスンし、クライアントが接続を要求するのを待ちます。

次は、HTTP モジュールを使用して Web サーバーを作成する例です:

const http = require('http');
const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World!');
});
server.listen(3000, () => {
    console.log('Server running at http://localhost:3000');
});
ログイン後にコピー

上記のコードは、ローカル 3000 ポートで実行される Web サーバーを作成します。クライアントが要求するたびに、サーバー リクエストを送信すると、サーバーは「Hello World!」応答を返します。

2. リクエスト処理プロセス

Node.js のリクエスト処理プロセスは、次の図に示すように非常に単純です。 #上の図に示すように、クライアントが Web サーバーにリクエストを送信すると、サーバーは HTTP モジュールの createServer 関数を呼び出して HTTP サーバー インスタンスを作成することを示します。このとき、サーバーは指定されたポートをリッスンし、クライアントの接続要求を待ちます。クライアントが接続を確立すると、リクエスト ヘッダー、リクエスト本文など、クライアントから送信されたすべての情報を含むリクエスト オブジェクト (リクエスト) が作成されます。サーバーは、リクエスト オブジェクトに基づいてリクエストを処理し、応答オブジェクト (レスポンス) を生成してクライアントに送信し、クライアントはレスポンスの受信後に接続を閉じます。

3. リクエストの処理Node.js を使用してリクエストを処理する方法とテクニック

Node.js では、リクエスト ヘッダーやリクエスト本文など、リクエストを処理するためのさまざまな情報を req オブジェクトを通じて取得できます。同時に、Node.js のルーティング (ルーター) の概念も理解する必要があります。ルーティングは、アプリケーションがリクエストにどのように応答するかを決定する方法であり、主に URL パスや HTTP リクエスト メソッドが含まれます。

次に、Get リクエストと Post リクエストの処理例を示します。

const http = require('http');
const querystring = require('querystring');

http.createServer((req, res) => {
    let method = req.method;
    let url = req.url;
    let body = '';
    req.on('data', (chunk) => {
        body += chunk;
    });
    req.on('end', () => {
        let params;
        if (method == 'GET') {
            params = url.split('?')[1];
            console.log(params);
        } else {
            params = querystring.parse(body);
            console.log(params);
        }
        res.end('Hello ' + params.name);
    });
}).listen(3000, () => {
    console.log('Server running at http://localhost:3000');
});
ログイン後にコピー
上記のコードは、Get リクエストと Post リクエストを処理し、クエリ文字列モジュールを使用してリクエスト本文を解析する方法を示しています。 URL が http://localhost:3000/?name=Node.js の場合、サーバーは「Hello Node.js」を出力し、Post リクエストを送信するときに、サーバーはリクエストボディに name 属性の値を出力します。

4. アクセスの制限とエラー処理

Web 開発では、サーバー上でのアクセスとエラー処理を制限する必要があることがよくあります。 Node.js は、http-errors、cors、morgan、helmet など、これらのタスクを実行するためのいくつかの組み込みモジュールを提供します。

http-errors: 404、500 などの HTTP エラー応答を作成するために使用できます。

cors: クロスドメインの問題を解決するためにミドルウェアで使用できます。

morgan: 各リクエストに関するログ情報を記録するために使用できます。

ヘルメット: HTTP ヘッダー情報を追加してサーバーを特定の Web 攻撃から保護するなど、サーバーのセキュリティを強化できます。

次に、エラー処理とアクセス制限の使用例を示します。

const http = require('http');
const createError = require('http-errors');
const express = require('express');
const cors = require('cors');
const morgan = require('morgan');
const helmet = require('helmet');

const app = express();

// 添加错误管理中间件
app.use((err, req, res, next) => {
    if (err && err.status == 404) {
        res.status(404).send('404 not found');
    } else {
        res.status(500).send('500 Internal Server Error');
    }
});

// 使用中间件
app.use(cors());
app.use(morgan('combined'));
app.use(helmet());

// 定义路由
app.get('/', (req, res) => {
    res.send('Hello World!');
})

// 监听端口
http.createServer(app).listen(3000, () => {
    console.log('Server running at http://localhost:3000');
});
ログイン後にコピー
上記のコードは、エラー処理とアクセス制限ミドルウェアの使用方法を示しています。その中で、http-errors、cors、morgan、helmet などのミドルウェアを使用すると、サーバーのセキュリティと可用性を強化し、コードの複雑さを軽減できます。

概要

この記事では、Node.js を使用してリクエストを処理する方法とテクニックを紹介します。これには、HTTP モジュール、リクエスト処理プロセス、リクエストの処理、アクセス制限、エラー処理などが含まれます。 Node.js は Web 開発に大きな変化をもたらし、プログラマーが開発サイクルを短縮し、開発効率を向上させるのに役立ちます。 Node.js についてまだ質問がある場合は、公式ドキュメントを参照するか、他のチュートリアル Web サイトにアクセスしてください。

以上がNode.js を使用してリクエストを処理する方法とテクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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