用koa写接口

koa作为node服务的解决方案,可以写接口,要用到以下中间件

  1. 路由 koa-router
  2. 协议分析 koa-body
  3. 跨域 @koa/cors
  4. josn格式化 koa-josn

koa-router

运用router.get(’/*’, function(){}); 可以对不同的请求进行分别处理

安装:

npm install - S koa-router

应用
1、引用

const Koa = require('koa');
const Router = require('koa-router');

const app = new Koa();
const router = new Router();

2、使用

//路由拦截
router.post('/post', async (ctx) => {
    let { body } = ctx.request; // es6的写法把ctx.request请求体的所有方法都放到body对象里面去
    console.log(body);
    console.log(ctx.request);
    let aa = {};
    aa.status ='';
    aa.name = 'cx2';
    ctx.body = aa;
})

app.use(router.routes())
    .use(router.allowedMethods())   //把前面所有定义的方法添加到app应用上去

2、koa-body 和 @koa/cors

koa-body作为Koa的中间件,对文件上传和POST JSON,设置json文件的大小和上传文件大小,都比较友好

@koa/cors主要是用于接口请求的跨域问题,,有了这个接口就会在返回数据的时候带上Access-Control-Allow-Origin响应头,默认允许所有请求方式跨域,ACCESS-Control-Allow0Origin默认为*

1、安装这两个中间件

npm  install -S koa-body @koa/cors

栗子:
在这里插入图片描述
安装结果 你就会在package.json中看到

"dependencies": {
    "@koa/cors": "^3.0.0",
    "koa": "^2.11.0",
    "koa-body": "^4.1.1",
    "koa-router": "^8.0.8"
  }

应用:
1、引入

const cors = require('@koa/cors');
const koaBody = require('koa-body');

2、app.use
使用中间件的时候要用app.use()这个方法,中间件的加载是有顺序的,所以注意koaBody在cors前面

扫描二维码关注公众号,回复: 11539165 查看本文章
app.use(koaBody())
app.use(cors())  

3、koa-json

json pretty json进行格式化换行之类的 字符串转化成json格式 常见的方法 日志 处理
安装

npm install -S koa-json

应用

app.use(json({pretty:false, param:'pretty'}));

4、prefix 给接口加前缀

给所有的接口加ac/v1的前缀

router.prefix('/ac/v1')

5、用postman测一下自己的接口

在这里插入图片描述
能用。

完整代码

/**
 * koa作为node服务的解决方案,
 * 路由 koa-router
 * 协议分析 koa-body koa-body作为Koa的中间件,对文件上传和PSOT JSON,设置josn的大小和文件上传的大小,都比较友好,
 * 跨域 koa-cors
 * 使用中间件要用app.use()这个方法 中间件的加载要有顺序的 所以koaBody放在cors前面
 * 路由的前缀
 * 获取路由请求参数params
 * json pretty json进行格式化换行之类的 字符串转化成json格式 常见的方法 日志 处理
* */

const Koa = require('koa');
const Router = require('koa-router');
const cors = require('@koa/cors');
const koaBody = require('koa-body');
const json = require('koa-json');
const app = new Koa();
const router = new Router();
router.prefix('/ac/v1')

router.get('/',function (ctx) {
    console.log(ctx);
    ctx.body = 'hello world';
});
router.get('/api',function (ctx) {
    //get params = ctx.request.query
    const params = ctx.request.query;
    console.log(params);
    console.log(params);
    console.log(ctx);
    ctx.body = 'hello routerApi';
});
router.post('/post', async (ctx) => {
    let { body } = ctx.request; // es6的写法把ctx.request请求体的所有方法都放到body对象里面去
    console.log(body);
    console.log(ctx.request);
    let aa = {};
    aa.status ='';
    aa.name = 'cx2';
    ctx.body = aa;

})

app.use(koaBody())
app.use(cors())   
app.use(json({pretty:false, param:'pretty'}));
app.use(router.routes())
    .use(router.allowedMethods())   //把前面所有定义的方法添加到app应用上去

app.listen(3002);

猜你喜欢

转载自blog.csdn.net/Alive_tree/article/details/105731951
koa