목차
1. 익스프레스 미들웨어란
2. Express 미들웨어 호출 프로세스
3. 미들웨어 형식
4. next() 함수의 역할
5. 전역적으로 유효한 미들웨어
6. 로컬로 유효한 미들웨어
7. 미들웨어의 역할
8. Express 미들웨어 주의사항 5가지
9. Express 미들웨어 분류
웹 프론트엔드 JS 튜토리얼 Express 미들웨어란 무엇입니까? 노드에서 어떻게 사용하나요?

Express 미들웨어란 무엇입니까? 노드에서 어떻게 사용하나요?

Feb 10, 2022 pm 07:01 PM
node

Express 미들웨어란 무엇인가요? Node에서 어떻게 사용하나요? 다음 글에서는 Express 미들웨어의 간단한 사용법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!

Express 미들웨어란 무엇입니까? 노드에서 어떻게 사용하나요?

1. 익스프레스 미들웨어란

미들웨어는 구체적으로 비즈니스 프로세스의 중간 처리 링크를 말합니다.

2. Express 미들웨어 호출 프로세스

요청이 Express 서버에 도달하면 여러 미들웨어를 지속적으로 호출하여 요청을 전처리할 수 있습니다.

3. 미들웨어 형식

은 본질적으로 함수 처리 함수입니다.

참고: 미들웨어 함수의 형식 매개변수 목록에는 다음 매개변수가 포함되어야 합니다. 라우팅 처리 함수에는 req와 res만 포함되어 있습니다.

// next参数必须在最后一个传入
const mw = (req, res, next) => {
    ...
    // next()必须在最后调用
    next()
}
로그인 후 복사

4. next() 함수의 역할

next 함수는 여러 미들웨어의 연속 호출을 구현하는 핵심입니다. 순환 관계를 다음 미들웨어로 옮기는 것을 의미합니다. 또는 라우팅.

5. 전역적으로 유효한 미들웨어

클라이언트가 시작한 모든 요청은 서버에 도달한 후 미들웨어를 트리거하며, 이를 전역적으로 유효한 미들웨어라고 합니다. server.use(미들웨어 함수)를 호출하면 전역적으로 유효한 미들웨어를 정의할 수 있습니다. 샘플 코드는 다음과 같습니다.

const mw = (req, res, next) => {
    next()
}

const mw1 = (req, res, next) => {
    next()
}

// 全局生效的中间件,中间件调用顺序以传入顺序为准
server.use(mw,mw1)
로그인 후 복사

6. 로컬로 유효한 미들웨어

로컬 미들웨어는 지정된 라우팅 경로에서만 작동합니다. 유효

const mw = (req, res, next) => {
    next()
}
const mw1 = (req, res, next) => {
    next()
}
// 局部生效的中间件
server.get('/',mw,(req,res)=>{
    res.send('路径:/')
})



// 定义多个局部生效的中间件
// 1、直接逗号分隔
server.get('/',mw,mw1,(req,res)=>{
    res.send('路径:/')
})
// 2、或者使用数组包含
server.get('/',[mw,mw1],(req,res)=>{
    res.send('路径:/')
})
로그인 후 복사

7. 미들웨어의 역할

여러 미들웨어가 동일한 req와 res를 공유합니다. 이 기능을 기반으로 다운스트림 미들웨어 또는 라우팅에서 사용할 수 있도록 업스트림 미들웨어의 req 또는 res 개체에 사용자 정의 특성이나 메서드를 균일하게 추가할 수 있습니다.

const mw = (req, res, next) => {
    // 添加属性
    req.startTime=new Date()
    next()
}
로그인 후 복사

8. Express 미들웨어 주의사항 5가지

  • 라우팅 전 반드시 미들웨어를 등록하세요

  • 클라이언트에서 보낸 요청은 처리를 위해 여러 미들웨어를 지속적으로 호출할 수 있습니다

  • 비즈니스 실행 후 미들웨어의 코드에서는 next() 함수 호출을 잊지 마세요

  • 코드 로직 혼란을 방지하기 위해 next() 함수 호출 후 추가 코드를 작성하지 마세요

  • 여러 미들웨어를 연속적으로 호출할 경우, 여러 미들웨어 간에 req 및 res 객체 공유

9. Express 미들웨어 분류

  • 애플리케이션 수준 미들웨어

  • 경로 수준 미들웨어

  • 오류 수준 미들웨어

  • 익스프레스 내장- 미들웨어

  • 타사 미들웨어

자세한 소개:

  • 애플리케이션 수준 미들웨어

    app.use() 또는 app.get( ) 또는 app.post()를 통해 미들웨어가 바인딩됨 앱 인스턴스를 애플리케이션 수준 미들웨어라고 합니다. 코드 예제는 다음과 같습니다.

    // 全局生效的中间件(应用级别的中间件)
    server.use(mw,mw1)
    // 局部生效的中间件(应用级别的中间件)
    server.get('/',mw,mw1,(req,res)=>{
        res.send(`请求进入服务器的时间:${req.startTime}`)
    })
    로그인 후 복사
  • Routing-level middleware

    bound to express.Router() 인스턴스의 미들웨어를 라우팅 수준 미들웨어라고 합니다. 사용법은 애플리케이션 수준 미들웨어와 다르지 않습니다. 단, 애플리케이션 수준 미들웨어는 앱 인스턴스에 바인딩되고, 라우팅 수준 미들웨어는 라우터 인스턴스에 바인딩됩니다. 코드 예시는 다음과 같습니다.

    const router = require('./router/router')
    // 路由级别的中间件
    router.use((req,res,next)=>{
        next()
    })
    로그인 후 복사
  • 오류 수준 미들웨어

    오류 수준 미들웨어의 역할 : Specialized 프로젝트 전반에 걸쳐 발생하는 비정상적인 오류를 캡쳐하여 프로젝트가 비정상적으로 충돌하는 것을 방지하는데 사용됩니다.

    Format: 오류 수준 미들웨어의 함수 처리 기능에는 4개의 형식 매개변수가 있어야 하며 형식 매개변수의 순서는 앞에서 뒤로(err, req, res, next)입니다.

    참고: 오류 수준 미들웨어는 모든 경로 후에 등록해야 합니다!

    // 人为制造错误
    server.get('/err', (req, res) => {
        throw new Error('人为抛出错误!!!')
        res.send('err Page')
    })
    // 定义错误级别的中间件
    server.use((err, req, res, next) => {
        console.log('发生了错误:' + err.message);
        res.send('Error:'+err.message)
        next()
    })
    로그인 후 복사
  • Express의 내장 미들웨어

    Express 4.16.0 버전부터 Express에는 일반적으로 사용되는 3가지 미들웨어가 내장되어 있어 크게 향상되었습니다. Express 프로젝트의 개발 효율성 및 경험:

    • express.static은 HTML 파일, 이미지, CSS 스타일 등과 같은 정적 리소스를 빠르게 호스팅하는 내장 미들웨어입니다. (호환성 없음)

    • express .json JSON 형식의 요청 본문 데이터 구문 분석(호환성 있음, 버전 4.16.0 이상에서만 사용 가능)

    • express.urlencoded URL 인코딩 형식의 요청 본문 데이터 구문 분석(호환성 있음, 버전 4.16.0 이상에서만 사용 가능) ) 사용 가능)

    // 配置解析application/json格式数据的内置中间件
    server.use(express.json())
    // 配置解析application/x-www-form-urlencoded格式数据的内置中间件
    server.use(express.urlencoded({
        extended: false
    }))
    // 测试解析json的内置中间件
    server.post('/user',(req,res)=>{
        // 在服务器,可以使用req.body这个属性来接受客户端发送过来的请求数据
        // 默认情况下,如果不配置解析表单数据的中间件,则req.body默认等于undefined
        console.log(req.body);
        res.send('ok')
    })
    
    // 测试解析urlencoded的内置中间件
    server.post('/book',(req,res)=>{
        console.log(req.body)
        res.send('book ok')
    })
    로그인 후 복사
  • 타사 미들웨어

    는 공식적으로 Express에 내장되어 있지 않지만 타사 미들웨어라고 하는 타사에 의해 개발되었습니다. 프로젝트에서는 필요에 따라 타사 미들웨어를 다운로드하고 구성할 수 있으므로 프로젝트의 개발 효율성이 향상됩니다. 예: express@4.16.0 이전 버전에서는 타사 미들웨어 body-parser가 요청 본문 데이터를 구문 분석하는 데 자주 사용되었습니다. 사용 단계는 다음과 같습니다. express@4.16.0之前的版本中,经常使用body-parser这个第三方中间件,来解析请求体数据。使用步骤如下:

    • 运行npm install body-parser安装中间件

    • 使用require导入中间件

    • 调用server.use()

      🎜🎜 npm install body-parser를 실행하여 미들웨어를 설치합니다. 🎜🎜🎜🎜 require를 사용하여 미들웨어를 가져옵니다. 🎜🎜🎜🎜server.use( ) 미들웨어 등록 및 사용 🎜

    참고: Express에 내장된 express.urlencoded 미들웨어는 타사 미들웨어 body-parser를 기반으로 추가로 캡슐화됩니다.

  • 노드 관련 지식을 더 보려면 nodejs 튜토리얼을 방문하세요!

    위 내용은 Express 미들웨어란 무엇입니까? 노드에서 어떻게 사용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

nvm에서 노드를 삭제하는 방법 nvm에서 노드를 삭제하는 방법 Dec 29, 2022 am 10:07 AM

nvm을 사용하여 노드를 삭제하는 방법: 1. "nvm-setup.zip"을 다운로드하여 C 드라이브에 설치합니다. 2. "nvm -v" 명령을 통해 환경 변수를 구성하고 버전 번호를 확인합니다. install" 명령 노드 설치; 4. "nvm uninstall" 명령을 통해 설치된 노드를 삭제합니다.

Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Mar 28, 2023 pm 07:28 PM

파일 업로드를 처리하는 방법은 무엇입니까? 다음 글에서는 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법을 소개하겠습니다. 도움이 되길 바랍니다.

Node 서비스의 Docker 미러링을 수행하는 방법은 무엇입니까? 극한 최적화에 대한 자세한 설명 Node 서비스의 Docker 미러링을 수행하는 방법은 무엇입니까? 극한 최적화에 대한 자세한 설명 Oct 19, 2022 pm 07:38 PM

이 기간 동안 저는 Tencent 문서의 모든 카테고리에 공통되는 HTML 동적 서비스를 개발 중입니다. 다양한 카테고리에 대한 액세스 생성 및 배포를 촉진하고 클라우드로 이동하는 추세에 부응하기 위해. Docker를 사용하여 서비스 콘텐츠를 수정하고 제품 버전을 균일하게 관리합니다. 이 글에서는 제가 Docker를 서비스하면서 쌓은 최적화 경험을 여러분의 참고용으로 공유하겠습니다.

Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Apr 03, 2023 pm 06:02 PM

이 기사에서는 Node의 프로세스 관리 도구인 "pm2"를 공유하고 pm2가 필요한 이유, pm2 설치 및 사용 방법에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다!

PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? Mar 05, 2025 pm 05:57 PM

Pinetwork 노드에 대한 자세한 설명 및 설치 안내서이 기사에서는 Pinetwork Ecosystem을 자세히 소개합니다. Pi 노드, Pinetwork 생태계의 주요 역할을 수행하고 설치 및 구성을위한 전체 단계를 제공합니다. Pinetwork 블록 체인 테스트 네트워크가 출시 된 후, PI 노드는 다가오는 주요 네트워크 릴리스를 준비하여 테스트에 적극적으로 참여하는 많은 개척자들의 중요한 부분이되었습니다. 아직 Pinetwork를 모른다면 Picoin이 무엇인지 참조하십시오. 리스팅 가격은 얼마입니까? PI 사용, 광업 및 보안 분석. Pinetwork 란 무엇입니까? Pinetwork 프로젝트는 2019 년에 시작되었으며 독점적 인 Cryptocurrency Pi Coin을 소유하고 있습니다. 이 프로젝트는 모든 사람이 참여할 수있는 사람을 만드는 것을 목표로합니다.

pkg를 사용하여 Node.js 프로젝트를 실행 파일로 패키징하는 방법에 대해 이야기해 보겠습니다. pkg를 사용하여 Node.js 프로젝트를 실행 파일로 패키징하는 방법에 대해 이야기해 보겠습니다. Dec 02, 2022 pm 09:06 PM

nodejs 실행 파일을 pkg로 패키징하는 방법은 무엇입니까? 다음 기사에서는 pkg를 사용하여 Node 프로젝트를 실행 파일로 패키징하는 방법을 소개합니다. 도움이 되기를 바랍니다.

npm node gyp가 실패하는 경우 수행할 작업 npm node gyp가 실패하는 경우 수행할 작업 Dec 29, 2022 pm 02:42 PM

"node-gyp.js"와 "Node.js"의 버전이 일치하지 않아 npm node gyp가 실패했습니다. 해결 방법: 1. "npm 캐시 clean -f"를 통해 노드 캐시를 지웁니다. 2. "npm install - g n" n 모듈을 설치합니다. 3. "n v12.21.0" 명령을 통해 "node v12.21.0" 버전을 설치합니다.

Angular 및 Node를 사용한 토큰 기반 인증 Angular 및 Node를 사용한 토큰 기반 인증 Sep 01, 2023 pm 02:01 PM

인증은 모든 웹 애플리케이션에서 가장 중요한 부분 중 하나입니다. 이 튜토리얼에서는 토큰 기반 인증 시스템과 기존 로그인 시스템과의 차이점에 대해 설명합니다. 이 튜토리얼이 끝나면 Angular와 Node.js로 작성된 완벽하게 작동하는 데모를 볼 수 있습니다. 기존 인증 시스템 토큰 기반 인증 시스템으로 넘어가기 전에 기존 인증 시스템을 살펴보겠습니다. 사용자는 로그인 양식에 사용자 이름과 비밀번호를 입력하고 로그인을 클릭합니다. 요청한 후 데이터베이스를 쿼리하여 백엔드에서 사용자를 인증합니다. 요청이 유효하면 데이터베이스에서 얻은 사용자 정보를 이용하여 세션을 생성하고, 세션 정보를 응답 헤더에 반환하여 브라우저에 세션 ID를 저장한다. 다음과 같은 애플리케이션에 대한 액세스를 제공합니다.

See all articles