zoukankan      html  css  js  c++  java
  • koa 路由配置

    Koa 路由

    路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等) 组成的,涉及到应用如何响应客户端对某个网站节点的访问。

    通俗的讲:路由就是根据不同的 URL 地址,加载不同的页面实现不同的功能。

    Koa 中的路由和 Express 有所不同,在 Express 中直接引入 Express 就可以配置路由,但是在 Koa 中我们需要安装对应的 koa-router 路由模块来实现

    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。

    query:返回的是格式化好的参数对象,querystring:返回的是请求字符串。

    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 动态路由

    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');
    })

    可以多个值

    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

    路由的模块化

  • 相关阅读:
    匿名函数与内置函数(python3入门)
    迭代器和生成器(python3入门)
    python中文件操作方法(python3入门)
    python所有数据类型及操作(python3入门)
    Python语法命令学习-Day3(作业练习)
    Python语法命令学习-Day3(零基础)
    构建之法阅读笔记01
    学习进度条
    软件工程个人作业01
    阅读计划
  • 原文地址:https://www.cnblogs.com/LO-ME/p/10750253.html
Copyright © 2011-2022 走看看