노드 미들웨어에는 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'))//括号中是设置的静态文件路径
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!