前端迈向架构师第一步-快速了解koa框架-2

「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

今天还是继续学习KOA框架的知识( ̄▽ ̄)"

本文介绍koa常用的一些插件:

  • @koa/cors 跨域处理
  • koa-body 协议处理

使用koa-body和@koa/cors

  • koa-body 处理request过来的请求里面的数据
  • @koa/cors 处理一些跨域请求

安装: npm install -S koa-body @koa/cors

使用顺序注意: 需要先使用koa-body处理request过来的请求里面的数据,然后再使用@koa/cors 处理一些跨域请求

Koa中post传值的获取

var Koa = require('koa');
var Router = require('koa-router');
var cors = require('@koa/cors');
var koabody = require('koa-body');
 
var app = new Koa();
var router = new Router();
 
router.post('/post', async (ctx, next) => {
    let {body}=ctx.request;//获取前端给的值
    ctx.body={//把body里面前端给的内容再返回给前端
        ...body
    }
});
 
//app.use注意顺序
app.use(koaBody())//处理request过来的请求里面的数据
app.use(cors())//处理一些跨域请求
 
app.use(router.routes())
    .use(router.allowedMethods());
 
app.listen(3000);
复制代码

Koa中get传值及获取get传值

  1. 键值对拼接传参,接收参数主要通过ctx.qruery获取,需要注意的是在ctx与ctx.request里均可以获得一样的结果。

  2. 动态路由传参,接收参数主要通过ctx.params获取。

键值对拼接传参 示例如下:


var Koa = require('koa');
var router = require('koa-router')();
var app = new Koa();
// http://localhost:3000/details?id=1&name=jiangyx
router.get('/details',async(ctx)=>{
    // 从ctx中读取Get传值
    console.log(ctx.url);// /details?id=1&name=jiangyx
    console.log(ctx.query); // { id: '1', name: 'jiangyx' } // 获取的是对象,用的最多的方式
    console.log(ctx.querystring) // id=1&name=jiangyx // 获取的是字符串
 
    // 从ctx里的request里获取Get传值
    console.log(ctx.request.url); // /details?id=1&name=jiangyx
    console.log(ctx.request.query); // { id: '1', name: 'jiangyx' }
    console.log(ctx.request.querystring); // id=1&name=jiangyx
});
 
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3000);
复制代码

动态路由传参 示例如下:

var Koa = require('koa');
var router = require('koa-router')();
var app = new Koa();
 
// http://localhost:3000/details/1/jiangyx
router.get('/details/:id/:name', async (ctx) => {
    // 获取动态路由的传值
    console.log(ctx.params); // { id: '1' ,name:'jiangyx'}
});
 
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3000);
复制代码

Guess you like

Origin juejin.im/post/7031724999006224391