Express 미들웨어란 무엇입니까? 노드에서 어떻게 사용하나요?
Express 미들웨어란 무엇인가요? Node에서 어떻게 사용하나요? 다음 글에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

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

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

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

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

"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.js로 작성된 완벽하게 작동하는 데모를 볼 수 있습니다. 기존 인증 시스템 토큰 기반 인증 시스템으로 넘어가기 전에 기존 인증 시스템을 살펴보겠습니다. 사용자는 로그인 양식에 사용자 이름과 비밀번호를 입력하고 로그인을 클릭합니다. 요청한 후 데이터베이스를 쿼리하여 백엔드에서 사용자를 인증합니다. 요청이 유효하면 데이터베이스에서 얻은 사용자 정보를 이용하여 세션을 생성하고, 세션 정보를 응답 헤더에 반환하여 브라우저에 세션 ID를 저장한다. 다음과 같은 애플리케이션에 대한 액세스를 제공합니다.
