使用koa-body之后,koa-router匹配不到路由?
//路由
//前端请求
这个时候前端会报404
如果在路由里不加koaBody,可以匹配到路由,但是在后端console.log(ctx.request.body)
却是undefined
求指导。。。
--------------------------update------------------------
//app.js
//引入Koa并初始化
const Koa = require('koa');
const app = new Koa();
//引入数据库相关模块
const mongoose = require('mongoose');
const Database = require('./models/db');
const db = Database();
//引入路由相关模块
const router = require('koa-router')();
const frontend = require('./router/frontend');
const backend = require('./router/backend');
const cors = require('koa-cors');
// const koaBody = require('koa-body');
// app.use(koaBody());
//解决跨域请求
app.use(cors());
app.use(frontend['routes']());
app.use(backend['routes']());
app.use(router.routes());
app.listen(8088);
console.log('app started at port 8088...');
//router.js
//引入Koa并初始化
const Koa = new require('koa');
const app = new Koa();
//引入路由并初始化路由信息
const Router = require('koa-router');
const router = new Router({
prefix: '/backend'
});
const util = require('./../models/utils');
const body = require('koa-body')();
//引入controller
const articleController = require('./../controller/article.controller');
//管理系统接口 start
//登录界面
router.get('/', function (ctx, next){
ctx.body = {msg: 'Hello World!'};
});
//用户登录
router.post('/login', body, function (ctx, next){
console.log(ctx)
ctx.body = {
data: 'hello world'
}
});
//获取文章
router.get('/article', async function(ctx, next){
ctx.body = {data: await articleController.article()}
});
//管理系统接口 end
module.exports = router;
//前端请求
export default {
components: {
horizontal_input_item: horizontalInputItem,
form_button: formButton
},
methods: {
login() {
let valid = new sFormValidation({
el: '[name="form"]',
rules: {
text: 'empty|length>5&length<15',
password: 'empty|length>6&length<20&char&num'
}
});
let result = valid.validate();
if(result == 'validated'){
let data = valid.serialize();
this.$http.post('http://localhost:8088/backend/login', data, {emulateJSON: true}).then((response) => {
console.log(response);
}, (reject) => {
console.log(reject);
})
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
app.use(core())
放到最前面估计就好了
因为我用的是koa2,所以用各种中间件的时候都要用支持koa2的版本。
npm install koa-body@next
即可我也遇到这个问题,最后换了种做法,把app.use(koaBody())写成了单独一句,没把koaBody放到router中,就可以了。你呢,后面用什么方法解决的?