天天看點

koa-router

為了處理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