>웹 프론트엔드 >프런트엔드 Q&A >노드 미들웨어란 무엇입니까?

노드 미들웨어란 무엇입니까?

藏色散人
藏色散人원래의
2021-12-10 13:52:343738검색

노드 미들웨어에는 1. koa-bodyparser, 3. 정적 리소스 관리자 koa-static, 5. koa-cors2 등이 포함됩니다.

노드 미들웨어란 무엇입니까?

이 문서의 운영 환경: Windows 7 시스템, nodejs 버전 10.16.2, Dell G3 컴퓨터.

노드 미들웨어란 무엇인가요?

노드 미들웨어 유형:

노드 미들웨어는 프로그램에 캡슐화된 http 요청을 처리하는 기능입니다. 노드 미들웨어는 파이프라인에서 실행됩니다. 미들웨어는 클라이언트/서버 운영 체제 위에 위치하며 컴퓨터 리소스와 네트워크 통신을 관리합니다.

미들웨어는 주요 논리적 비즈니스를 제공하며 애플리케이션 수준 미들웨어, 라우팅 수준 미들웨어, 내장 미들웨어, 타사 미들웨어 및 오류 수준 미들웨어로 나눌 수 있습니다.

노드에서 자주 사용하는 미들웨어:

노드를 학습하는 과정에서 유용한 미들웨어를 많이 축적했습니다. 대부분의 미들웨어는 koa

1과 함께 사용해야 합니다. koa-bodyparser

이 플러그인은 프런트엔드 포스트 요청에서 가져온 매개변수를 구문 분석하는 데 사용됩니다

//入口文件
const bodyParser = require('koa-bodyparser');
app.use(bodyParser({//设置可以接收的数据类型
    enableTypes:['json', 'form', 'text']
}))
async function (ctx) {
    console.log(ctx.request.body)
    ctx.req.on('data',(data) => {
        console.log(JSON.parse(data),'文件')
    })
}

koa-bodyparser가 도입되지 않은 경우, ctx.req .on('data',callback)을 통해서만 매개변수를 가져올 수 있습니다

그리고 미들웨어를 도입한 후에는 매개변수를 가져오려면 ctx.request.body만 있으면 됩니다. 처음보다 훨씬 편리해졌습니다.

2.koa-body

이 플러그인은 사진, zip 파일 등 요청에 업로드된 파일 및 파일 정보를 얻는 데 사용됩니다.

const koaBody    = require('koa-body')
app.use(koaBody({
        multipart: true,
        formidable: {
            maxFileSize: 20 * 1024 * 1024    // 设置上传文件大小最大限制,默认2M
        }
    }))

요청 처리 과정에서 ctx를 통해 모두 직접 얻을 수 있습니다. .request.files 업로드된 파일에 대한 정보입니다.

주의! ! ! koa-body를 사용한 후에는 koa-bodyparser를 사용하지 마세요. 충돌이 발생하여 프런트 엔드 게시물 요청에 의해 반환된 상태 코드가 취소됩니다

3. 정적 리소스 관리자 koa-static

로컬 중에 사진을 업로드했습니다. 그런 다음 이미지 주소를 인쇄하면 c://.../name/.png라는 긴 문자열이 됩니다. 로컬로 액세스할 수는 있지만 서버에 배치하면 작동하지 않습니다.

koa-static을 도입하면 프로젝트 경로에 있는 폴더에 정적 파일 주소를 지정한 다음 http://192.168.0.177:3030/name.png

const koaStatic  = require('koa-static')
app.use(koaStatic('./public'))//括号中是设置的静态文件路径
에서 koa가 모니터링하는 포트를 통해 이미지에 직접 액세스할 수 있습니다.

4. Cors, koa-cors, koa-cors2 요청 헤더 설정

기본적으로 이러한 미들웨어를 사용하여 크로스 도메인 및 요청 헤더 정보를 구성합니다.

const cors       = require('koa2-cors') 
app.use(cors({
    exposeHeaders: ['multipart/form-data','application/x-www-form-urlencoded']
}))

매개변수를 직접 설정하거나 매개변수 설정 없이 직접 적용할 수도 있습니다(cors. ())는 도메인을 교차할 수 있습니다.

여기서 크로스 도메인 얘기가 나와서 네이티브 노드의 크로스 도메인 설정 방법을 언급하겠습니다. (요청 헤더의 다양한 구성도 설정할 수 있습니다.)

app.use(async (ctx, next) => {
   ctx.set('Access-Control-Allow-Origin', ctx.headers.origin)//'*'有可能会问题
   ctx.set('Access-Control-Allow-Credentials', 'true')
   ctx.set('Access-Control-Allow-Headers', 'Origin ,multipart/form-data, X-Requested-With, Content-Type, Accept')
   await next()
})

앞으로 유용한 미들웨어를 만나면 기록해 두겠습니다. ! ! !

추천 학습: "node.js 비디오 튜토리얼"

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

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