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