Nodejs中間層の設定方法

PHPz
リリース: 2023-05-08 09:48:07
オリジナル
660 人が閲覧しました

インターネットの急速な発展に伴い、Web アプリケーションはますます複雑かつ大規模になってきています。したがって、Web アプリケーションの保守性とスケーラビリティを向上させるために、多くの Web 開発者は中間層アーキテクチャ パターンを採用しています。 Node.js 中間層は、効率的な I/O 操作パフォーマンスを備え、イベント駆動型プログラミングを簡単に実装できるため、一般的な中間層実装です。

この記事では、Node.js で単純な中間層を構築し、いくつかの一般的な関数を実装する方法を紹介します。

1. 中間層とは

中間層はクライアントとサーバーの間の層を指し、その主な機能はクライアントのリクエストを処理し、サーバーにリクエストを送信することです。 Web アプリケーションでは、複雑なビジネス ロジックをより適切に処理するために、さまざまなサービスを 1 つのアプリケーションに統合するために中間層がよく使用されます。さらに、中間層を使用して、キャッシュ、認証、認可などの機能を実装することもできます。

2. Node.js 中間層の実装

Node.js では、中間層を実装する主な方法が 2 つあります: WebSocket プロトコルに基づくソケット中間層と HTTP に基づく HTTP 中間層です。プロトコル層。このうち、HTTP 中間層は、Web 標準と互換性があり、実装と保守が容易なため、最もよく使用される方式です。

次は、リクエストの転送、リクエストのキャッシュ、リクエストのログ記録などの機能を実装する簡単な Node.js 中間層の例です:

const http = require('http');
const request = require('request');
const url = require('url');

http.createServer((req, res) => {
  // 解析前端请求的url
  const urlObject = url.parse(req.url);
  
  // 配置中间层请求的选项参数
  const options = {
    url: 'http://backend-service' + urlObject.path,
    headers: req.headers
  };
  
  // 处理GET请求的缓存功能
  if (req.method === 'GET') {
    // 检查缓存中是否有数据
    const cacheData = cache.get(options.url);
    if (cacheData) {
      res.writeHead(200, cacheData.headers);
      res.end(cacheData.body);
      console.log('cache hit: ' + options.url);
      return;
    }
  }
  
  // 请求发送到后端服务
  console.log('forwarding request: ' + options.url);
  const proxyRequest = request(options);
  
  // 处理GET请求的缓存功能
  if (req.method === 'GET') {
    // 将响应数据缓存到cache中
    proxyRequest.on('response', (response) => {
      cache.set(options.url, response, response.headers['cache-control']);
    });
  }
  
  // 将请求响应返回给前端
  req.pipe(proxyRequest).pipe(res);
  
  // 请求日志记录
  console.log(req.method + ' ' + req.url + ' ' + res.statusCode);
}).listen(8080);
ログイン後にコピー

上記のコードでは、Node を使用します。 js の組み込み http モジュールは HTTP サーバーを作成します。リクエストがサーバーに到着すると、まずフロントエンドによってリクエストされた URL を解析し、URL アドレスに従ってリクエストをバックエンド サービス (ここでのデフォルトは backend-service) に転送します。リクエストをバックエンド サービスに転送する前に、リクエストに対していくつかの処理も実行しました。

  1. GET リクエストを処理するためのキャッシュ機能: 有効期間中、リクエストに対する応答データが存在する場合、バックエンド サービスに対する繰り返しのリクエストを避けるために、キャッシュ内のデータをフロントエンドに直接返します。
  2. リクエスト ログを記録する: リクエストされたメソッド、URL、および応答ステータス コードを Node.js コンソールに出力します。

さらに、Node.js 中間層は、リクエストの認証、認可、電流制限、サーキット ブレーカーなど、他の多くの機能も実装できます。

3. 概要

中間層は、Web アプリケーション アーキテクチャ パターンの一種であり、その主な機能は、複雑なビジネスをより適切に処理するために、さまざまなサービスを 1 つのアプリケーションに統合することです。 Node.js では、HTTP または WebSocket プロトコルを通じて中間層を実装できます。 HTTP プロトコルは Web 標準と互換性があり、実装と保守が簡単であるため、最も一般的な中間層の実装方法です。

Node.js 中間層を構築する場合、Node.js の効率的な I/O 操作パフォーマンスとイベント駆動型プログラミング特性を使用して、リクエストの転送、リクエストのキャッシュ、リクエストなどのいくつかの一般的な機能を実装できます。ロギングなどさらに、Node.js 中間層は、リクエストの認証、認可、電流制限、融合などの他の多くの機能を実装して、Web アプリケーションの保守性と拡張性を向上させることもできます。

以上がNodejs中間層の設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!