[Node.js/Koa]Koaミドルウェア
Expressについて議論し,
Koaミドルウェア
미들웨어(Middleware)
について理解した.미들웨어
は、要求と応答との間の動作をミドルウェアと呼ぶ.ルータなどは典型的な中間部品である.Koa
ライブラリもミドルウェアを非常に重視しています.Koaミドルウェア Koa
は、use()
関数を使用してミドルウェア関数を登録する.このuse()
関数の基本タイプは次のとおりです.use(미들웨어 함수);
미들웨어 함수
は、ミドルウェアを記述する関数であり、以下の構成を有する.(context, next) => {};
第1のパラメータcontext
は、要求/応答に関する情報を含む.2番目のパラメータnext
は、次のミドルウェアを呼び出す関数です.next
関数がない場合、後続のミドルウェアは処理されません.
では、ミドルウェアの作成方法が理解されている以上、前回作成したコードにミドルウェア機能を追加しましょう.const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use((context, next) => {
console.log(context.url);
console.log('1st Middleware');
next();
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
node 파일경로
コマンドを使用してサーバを実行し、localhost:3000
に接続すると、端末は次のログを記録します.の間、/favicon.ico
はサイトのアイコンファイルであり、デフォルトでは要求されたファイルであり、コンソールに表示されます.ないかもしれないので、あまり気にしないでください.
要するに、結局、ミドルウェアで書いた内容が端末でよく表現されたのではないでしょうか.
今回は,作成したばかりのコードに,最初のミドルウェアのnext()
関数を注釈する.const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use((context, next) => {
console.log(context.url);
console.log('1st Middleware');
//next(); 주석 처리
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
接続されたミドルウェアのnext
が失われたため、登録された最初のミドルウェアのみが実行されます.
next()関数はPromiseを返します
実はuse()
関数のnext()
はExpressにもありますKoa
のnext()
は、Pormise
を返します.これはExpressと区別する特徴です.基本情報が返されるため、接続された次のミドルウェアのnext()
が返す基本情報は、前のミドルウェアが終了した後に返さなければならない.next()
はpromisを返すので、以下に示すようにthen()
を使用することができる.const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use((context, next) => {
console.log(context.url);
console.log('1st Middleware');
next().then(() => {
console.log('End');
});
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
また、Koa
はasync/await
構文もサポートしているので、Expressのようにtry~catch
で例外処理や追加のライブラリインストールを行う必要はありません.const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use(async (context, next) => {
console.log(context.url);
console.log('1st Middleware');
await next();
console.log('End with async/await');
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
Reference
この問題について([Node.js/Koa]Koaミドルウェア), 我々は、より多くの情報をここで見つけました
https://velog.io/@bami/Node.jsKoa-Koa-미들웨어
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
use(미들웨어 함수);
(context, next) => {};
const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use((context, next) => {
console.log(context.url);
console.log('1st Middleware');
next();
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use((context, next) => {
console.log(context.url);
console.log('1st Middleware');
//next(); 주석 처리
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
実は
use()
関数のnext()
はExpressにもありますKoa
のnext()
は、Pormise
を返します.これはExpressと区別する特徴です.基本情報が返されるため、接続された次のミドルウェアのnext()
が返す基本情報は、前のミドルウェアが終了した後に返さなければならない.next()
はpromisを返すので、以下に示すようにthen()
を使用することができる.const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use((context, next) => {
console.log(context.url);
console.log('1st Middleware');
next().then(() => {
console.log('End');
});
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
また、
Koa
はasync/await
構文もサポートしているので、Expressのようにtry~catch
で例外処理や追加のライブラリインストールを行う必要はありません.const koa = require('koa');
const app = new koa();
const PORT = process.env.PORT || 3000;
app.use(async (context, next) => {
console.log(context.url);
console.log('1st Middleware');
await next();
console.log('End with async/await');
});
app.use((context, next) => {
console.log('2nd Middleware');
next();
});
app.use(context => {
context.body = 'Hello Koa!';
});
app.listen(PORT, () => {
console.log(`Koa is listening to port number: ${PORT}`);
});
Reference
この問題について([Node.js/Koa]Koaミドルウェア), 我々は、より多くの情報をここで見つけました https://velog.io/@bami/Node.jsKoa-Koa-미들웨어テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol