koa作为node服务的解决方案,可以写接口,要用到以下中间件
- 路由 koa-router
- 协议分析 koa-body
- 跨域 @koa/cors
- 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前面
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);