9-廖雪峰-node-web-koa 2-url
2056 ワード
koa-router
hello-koaプロジェクトでは、httpリクエストを処理して一律に同じHTMLを返すのは簡単ですが、ブラウザで測ると、任意のURLを入力しても同じページに戻ります.
通常、異なる結果を返すには、異なるURLに対して異なる処理関数を呼び出す必要があります.たとえば、次のように書きます.
このように書くと運行できますが、少し愚かなようです.
異なるURLに基づいて異なる処理関数を呼び出すURLを集中的に処理できるmiddlewareがあるはずです.そうすれば、各URLの処理関数の作成に専念することができます.
==koa-router==
URLを処理するには、URLマッピングの処理を担当するkoa-routerというmiddlewareを導入する必要があります.
前節のhello-koaプロジェクトをコピーしurl-koaと名前を変更しました.
まずpackage.jsonに依存項目を追加するには:
次にappを修正します.jsは、koa-routerを使用してURLを処理します.
注意koa-routerをインポートした文の最後の()は関数呼び出しです.
hello-koaプロジェクトでは、httpリクエストを処理して一律に同じHTMLを返すのは簡単ですが、ブラウザで測ると、任意のURLを入力しても同じページに戻ります.
通常、異なる結果を返すには、異なるURLに対して異なる処理関数を呼び出す必要があります.たとえば、次のように書きます.
app.use(async (ctx, next) => {
if (ctx.request.path === '/') {
ctx.response.body = 'index page';
} else {
await next();
}
});
app.use(async (ctx, next) => {
if (ctx.request.path === '/test') {
ctx.response.body = 'TEST page';
} else {
await next();
}
});
app.use(async (ctx, next) => {
if (ctx.request.path === '/error') {
ctx.response.body = 'ERROR page';
} else {
await next();
}
});
このように書くと運行できますが、少し愚かなようです.
異なるURLに基づいて異なる処理関数を呼び出すURLを集中的に処理できるmiddlewareがあるはずです.そうすれば、各URLの処理関数の作成に専念することができます.
==koa-router==
URLを処理するには、URLマッピングの処理を担当するkoa-routerというmiddlewareを導入する必要があります.
前節のhello-koaプロジェクトをコピーしurl-koaと名前を変更しました.
まずpackage.jsonに依存項目を追加するには:
"koa-router": "7.0.0"
// npm install 。
次にappを修正します.jsは、koa-routerを使用してURLを処理します.
const Koa = require('koa');
// require('koa-router') :
const router = require('koa-router')();
const app = new Koa();
// log request URL:
app.use(async (ctx, next) => {
console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);
await next();
});
// add url-route:
router.get('/hello/:name', async (ctx, next) => {
var name = ctx.params.name;
ctx.response.body = `Hello, ${name}!`;
});
router.get('/', async (ctx, next) => {
ctx.response.body = 'Index';
});
// add router middleware:
app.use(router.routes());
app.listen(3000);
console.log('app started at port 3000...');
注意koa-routerをインポートした文の最後の()は関数呼び出しです.
const router = require('koa-router')();
:
const fn_router = require('koa-router');
const router = fn_router();