koa 路由配置

Koa 路由npm

路由(Routing)是由一個 URI(或者叫路徑)和一個特定的 HTTP 方法(GET、POST 等) 組成的,涉及到應用如何響應客戶端對某個網站節點的訪問。app

通俗的講:路由就是根據不一樣的 URL 地址,加載不一樣的頁面實現不一樣的功能。koa

Koa 中的路由和 Express 有所不一樣,在 Express 中直接引入 Express 就能夠配置路由,可是在 Koa 中咱們須要安裝對應的 koa-router 路由模塊來實現async

npm install koa-router

建立app.js文件模塊化

const koa = require('koa')
const router = require('koa-router')() // 引入和實例化路由

const app = new koa() // 建立koa實列

// 配置路由
//ctx 上下文(content),包含了request和response信息
router.get('/', async (ctx, next) => {
  ctx.body="Hello koa";
})

router.get('/news', async (ctx, next) => {
  ctx.body="新聞 page"
});
app.use(router.routes()); //做用:啓動路由

// 做用: 這是官方文檔的推薦用法,咱們能夠 看到 router.allowedMethods()用在了路由匹配 router.routes()以後
// 因此在當全部 路由中間件最後調用.此時根據 ctx.status 設置 response 響應頭
app.use(router.allowedMethods()); // 能夠不配置這個,建議配置上

app.listen(3000,()=>{
  console.log('starting at port 3000');
})

 

 

Koa 路由 get 傳值網站

在 koa2 中 GET 傳值經過 request 接收,可是接收的方法有兩種:query 和 querystring。ui

query:返回的是格式化好的參數對象,querystring:返回的是請求字符串。url

const koa = require('koa')
const router = require('koa-router')() // 引入和實例化路由

const app = new koa() // 建立koa實列

// 配置路由
//ctx 上下文(content),包含了request和response信息
router.get('/', async (ctx, next) => {
  ctx.body="Hello koa";
})

router.get('/news', async (ctx, next) => {
  let url =ctx.url;
  //從 request 中獲取 GET 請求
  let request =ctx.request;
  let req_query = request.query;
  let req_querystring = request.querystring;
  //從上下文中直接獲取
  let ctx_query = ctx.query;
  let ctx_querystring = ctx.querystring;

  ctx.body={
    url,
    req_query,
    req_querystring,
    ctx_query,
    ctx_querystring
  }

});
app.use(router.routes()); //做用:啓動路由

// 做用: 這是官方文檔的推薦用法,咱們能夠 看到 router.allowedMethods()用在了路由匹配 router.routes()以後
// 因此在當全部 路由中間件最後調用.此時根據 ctx.status 設置 response 響應頭
app.use(router.allowedMethods()); // 能夠不配置這個,建議配置上

app.listen(3000,()=>{
  console.log('starting at port 3000');
})

 

 

 

Koa 動態路由spa

const koa = require('koa')
const router = require('koa-router')() // 引入和實例化路由

const app = new koa() // 建立koa實列

// 配置路由
//ctx 上下文(content),包含了request和response信息
router.get('/', async (ctx, next) => {
  ctx.body="Hello koa";
})

router.get('/news/:aid', async (ctx, next) => {
  console.log(ctx.params); // { aid: '123' } //獲取動態路由的數據
  ctx.body='這是新聞頁面'
});
app.use(router.routes()); //做用:啓動路由

// 做用: 這是官方文檔的推薦用法,咱們能夠 看到 router.allowedMethods()用在了路由匹配 router.routes()以後
// 因此在當全部 路由中間件最後調用.此時根據 ctx.status 設置 response 響應頭
app.use(router.allowedMethods()); // 能夠不配置這個,建議配置上

app.listen(3000,()=>{
  console.log('starting at port 3000');
})

能夠多個值3d

const koa = require('koa')
const router = require('koa-router')() // 引入和實例化路由

const app = new koa() // 建立koa實列

// 配置路由
//ctx 上下文(content),包含了request和response信息
router.get('/', async (ctx, next) => {
  ctx.body="Hello koa";
})

router.get('/news/:aid/:cid', async (ctx, next) => {
  console.log(ctx.params); // { aid: '123' } //獲取動態路由的數據
  ctx.body='這是新聞頁面'
});
app.use(router.routes()); //做用:啓動路由

// 做用: 這是官方文檔的推薦用法,咱們能夠 看到 router.allowedMethods()用在了路由匹配 router.routes()以後
// 因此在當全部 路由中間件最後調用.此時根據 ctx.status 設置 response 響應頭
app.use(router.allowedMethods()); // 能夠不配置這個,建議配置上

app.listen(3000,()=>{
  console.log('starting at port 3000');
})

 

若是匹配不到對應的動態路由那麼就會not found

 

 

 

 

路由的模塊化

相關文章
相關標籤/搜索