• koa 路由


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

    npm install koa-router --save

    const Koa = require('koa'); //引入koa模块
    const app = new Koa(); //实例化
    const Router = require('koa-router') //引入koa-router模块
    const router =new Router() //实例化
    
    //配置路由
    router.get('/', async (ctx)=>{
        ctx.body ='<h3>首页</h3>' 
    })
    router.get('/register',async (ctx)=>{
        ctx.body='<h3>注册页面</h3>'
    })
    router.get('/login', async (ctx) => {
        ctx.body = '<h3>登录页面</h3>'
    })
    
    //启动路由
    app
        .use(router.routes())
        .use(router.allowedMethods())
    
    
    app.listen(3000);
    
    /*
     router.allowedMethods()作用: 这是官方文档的推荐用法,我们可以
     看到 router.allowedMethods()用在了路由匹配 router.routes()之后,所以在当所有
     路由中间件最后调用.此时根据 ctx.status 设置 response 响应头
    */
    

    配置路由也可以这样配置:

    获取 get 传值:

    在 koa2 中 GET 传值通过 request 接收,但是接收的方法有两种:query 和 querystring。
    ① query:返回的是格式化好的参数对象。
    ② querystring:返回的是请求字符串
    const Koa = require('koa')
    const app = new Koa()
    const router = require('koa-router')() //直接引入实例化路由
    
    //获取get传值
    //加入地址栏输入的url为:http://localhost:3000/userName=jack&pwd=123
    router.get('/', async (ctx) => {
        //①从ctx中读取get传值 
        console.log(ctx.url) //  /?userName=jack&pwd=123
        console.log(ctx.query) // { userName: 'jack', pwd: '123' }
        console.log(ctx.querystring) //userName=jack&pwd=123
    
        //②从ctx里面的request中获取get传值
        console.log(ctx.request.url) //  /?userName=jack&pwd=123
        console.log(ctx.request.query) //{ userName: 'jack', pwd: '123' }
        console.log(ctx.request.querystring) //userName=jack&pwd=123
        ctx.body = '<h3>首页</h3>'
    })
    
    app.use(router.routes())
    app.use(router.allowedMethods())
    
    app.listen(3000)
    

    动态路由:

    const Koa = require('koa')
    const app = new Koa()
    const router = require('koa-router')()
    
    //动态路由
    //地址栏中输入 http://localhost:3000/login/userName=jack
    router.get('/login/:aid',async (ctx)=>{
        console.log(ctx.params) //{ aid: 'userName=jack' }
        ctx.body='登录页'
    
    })
    
    //动态路由中传多个参数
    //地址栏中输入 http://localhost:3000/list/news-list/10
    router.get('/list/:aid-list/:pid',async (ctx)=>{ 
        console.log(ctx.params) //{ aid: 'news', pid: '10' }
        ctx.body="列表页"
    })
    
    app.use(router.routes());   
    app.use(router.allowedMethods());
    
    app.listen(3000);
    

      

     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    计算机编程基础
    css3 压缩及验证工具
    BFC
    【原创】bootstrap框架的学习 第五课
    曼珠沙华
    仓央嘉措
    waiting for spring......
    一天
    21-chttp连接池该取多大
    守护线程会不会执行finally?默认情况new thread怎么样确定守护状态?
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/13166562.html
Copyright © 2020-2023  润新知