為了處理URL,我們需要引入
koa-router
這個middleware,讓它負責處理URL映射。
我們把上一節的
hello-koa
工程複制一份,重命名為
url-koa
。
先在
package.json
中添加依賴項:
"koa-router": "7.0.0"
然後用
npm install
安裝。
或者在項目中使用 npm i
koa-router
接下來,我們修改
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 = `<h1>Hello, ${name}!</h1>`;
});
router.get('/', async (ctx, next) => {
ctx.response.body = '<h1>Index</h1>';
});
// 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();
然後,我們使用
router.get('/path', async fn)
來注冊一個GET請求。可以在請求路徑中使用帶變量的
/hello/:name
,變量可以通過
ctx.params.name
通路。
再運作
app.js
,我們就可以測試不同的URL:
輸入首頁:http://localhost:3000/
輸入:http://localhost:3000/hello/koa