爲了處理URL,咱們須要引入koa-router
這個middleware,讓它負責處理URL映射。php
咱們把上一節的hello-koa
工程複製一份,重命名爲url-koa
。npm
先在package.json
中添加依賴項:json
"koa-router": "7.0.0"
而後用npm install
安裝。app
或者在項目中使用 npm i koa-router
koa
接下來,咱們修改app.js
,使用koa-router
來處理URL:async
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
訪問。ui
再運行app.js
,咱們就能夠測試不一樣的URL:url
輸入首頁:http://localhost:3000/
輸入:http://localhost:3000/hello/koa