>  기사  >  웹 프론트엔드  >  nodejs 중간 계층을 설정하는 방법

nodejs 중간 계층을 설정하는 방법

PHPz
PHPz원래의
2023-05-08 09:48:07660검색

인터넷의 급속한 발전으로 인해 웹 애플리케이션은 점점 더 복잡해지고 커지고 있습니다. 따라서 웹 애플리케이션의 유지 관리성과 확장성을 향상시키기 위해 많은 웹 개발자는 중간 계층 아키텍처 패턴을 채택합니다. Node.js 미들 레이어는 Node.js가 효율적인 I/O 작업 성능을 가질 뿐만 아니라 이벤트 기반 프로그래밍을 쉽게 구현할 수 있기 때문에 일반적인 중간 레이어 구현 방법입니다.

이 글에서는 Node.js에서 간단한 중간 계층을 구축하고 몇 가지 일반적인 기능을 구현하는 방법을 소개합니다.

1. 중간 계층이란 무엇인가요?

중간 계층은 클라이언트와 서버 사이의 계층을 말하며, 주요 기능은 클라이언트 요청을 서버에 보내는 것입니다. 웹 애플리케이션에서 중간 계층은 복잡한 비즈니스 로직을 더 잘 처리하기 위해 다양한 서비스를 하나의 애플리케이션으로 통합하는 데 종종 사용됩니다. 또한 중간 계층을 사용하여 캐싱, 인증, 권한 부여와 같은 기능을 구현할 수도 있습니다.

2. Node.js 중간 계층 구현

Node.js에는 중간 계층을 구현하는 방법이 크게 두 가지가 있습니다. WebSocket 프로토콜을 기반으로 하는 소켓 중간 계층과 HTTP 프로토콜을 기반으로 하는 HTTP 중간 계층입니다. 그 중 HTTP 중간 계층은 웹 표준과 호환되고 구현 및 유지 관리가 용이하기 때문에 가장 일반적으로 사용되는 방법입니다.

다음은 요청 전달, 요청 캐싱, 요청 로깅과 같은 기능을 구현하는 간단한 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. 요약

웹 애플리케이션 아키텍처 패턴의 일종으로 중간 계층의 주요 기능은 다양한 서비스를 하나의 애플리케이션에 통합하여 복잡한 비즈니스 로직을 더 잘 처리하는 것입니다. Node.js에서는 HTTP 또는 WebSocket 프로토콜을 통해 중간 계층을 구현할 수 있습니다. HTTP 프로토콜은 웹 표준과 호환되고 구현 및 유지 관리가 쉽기 때문에 가장 일반적인 중간 계층 구현 방법입니다.

Node.js 중간 계층을 구축할 때 Node.js의 효율적인 I/O 작업 성능과 이벤트 기반 프로그래밍 기능을 활용하여 요청 전달, 요청 캐싱, 요청 로깅과 같은 몇 가지 공통 기능을 구현할 수 있습니다. . 또한 Node.js 중간 계층은 요청 인증, 권한 부여, 전류 제한 및 융합 등과 같은 다른 많은 기능을 구현하여 웹 애플리케이션의 유지 관리 및 확장성을 향상시킬 수도 있습니다.

위 내용은 nodejs 중간 계층을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.