Koa.js-캐스 케이 딩
미들웨어 기능은 context object애플리케이션의 요청-응답주기에서 다음 미들웨어 기능. 이러한 함수는 요청 본문 구문 분석, 응답 헤더 추가 등과 같은 작업에 대한 요청 및 응답 개체를 수정하는 데 사용됩니다. Koa는'downstream', 그런 다음 컨트롤을 다시 전달 'upstream'. 이 효과는cascading.
다음은 작동중인 미들웨어 기능의 간단한 예입니다.
var koa = require('koa');
var app = koa();
var _ = router();
//Simple request time logger
app.use(function* (next) {
console.log("A new request received at " + Date.now());
//This function call is very important. It tells that more processing is
//required for the current request and is in the next middleware function/route handler.
yield next;
});
app.listen(3000);
위의 미들웨어는 서버의 모든 요청에 대해 호출됩니다. 따라서 모든 요청 후 콘솔에 다음 메시지가 표시됩니다.
A new request received at 1467267512545
특정 경로 (및 모든 하위 경로)로 제한하려면 라우팅에서했던 것처럼 경로를 생성하면됩니다. 실제로 이러한 미들웨어는 우리의 요청을 처리합니다.
예를 들면
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
//Simple request time logger
_.get('/request/*', function* (next) {
console.log("A new request received at " + Date.now());
yield next;
});
app.use(_.routes());
app.listen(3000);
이제 '/ request'의 하위 경로를 요청할 때마다 시간을 기록합니다.
미들웨어 호출 순서
Koa에서 미들웨어에 대한 가장 중요한 것 중 하나는 파일에 작성 / 포함되는 순서가 다운 스트림에서 실행되는 순서라는 것입니다. 미들웨어에서 yield 문에 도달하자마자 마지막에 도달 할 때까지 다음 미들웨어로 전환됩니다. 그런 다음 다시 돌아가서 yield 문에서 함수를 다시 시작합니다.
예를 들어, 다음 코드 스 니펫에서 첫 번째 함수는 먼저 yield까지 실행하고 두 번째 미들웨어는 yield까지 실행 한 다음 세 번째 함수를 실행합니다. 여기에 미들웨어가 더 이상 없기 때문에 뒤로 이동하기 시작하여 역순, 즉 세 번째, 두 번째, 첫 번째로 실행합니다. 이 예제는 Koa 방식으로 미들웨어를 사용하는 방법을 요약합니다.
var koa = require('koa');
var app = koa();
//Order of middlewares
app.use(first);
app.use(second);
app.use(third);
function *first(next) {
console.log("I'll be logged first. ");
//Now we yield to the next middleware
yield next;
//We'll come back here at the end after all other middlewares have ended
console.log("I'll be logged last. ");
};
function *second(next) {
console.log("I'll be logged second. ");
yield next;
console.log("I'll be logged fifth. ");
};
function *third(next) {
console.log("I'll be logged third. ");
yield next;
console.log("I'll be logged fourth. ");
};
app.listen(3000);
이 코드를 실행 한 후 '/'를 방문하면 콘솔에서 다음을 얻을 수 있습니다.
I'll be logged first.
I'll be logged second.
I'll be logged third.
I'll be logged fourth.
I'll be logged fifth.
I'll be logged last.
다음 다이어그램은 위의 예에서 실제로 일어나는 일을 요약합니다.
이제 자체 미들웨어를 만드는 방법을 알았으므로 가장 일반적으로 사용되는 커뮤니티 생성 미들웨어에 대해 논의하겠습니다.
타사 미들웨어
Express 용 타사 미들웨어 목록은 여기에서 확인할 수 있습니다. 다음은 가장 일반적으로 사용되는 미들웨어입니다.
- koa-bodyparser
- koa-router
- koa-static
- koa-compress
다음 장에서 여러 미들웨어에 대해 논의 할 것입니다.