使用koa-body之后,koa-router匹配不到路由?

发布于 2022-09-04 11:45:11 字数 3109 浏览 34 评论 0

//路由

clipboard.png

//前端请求

clipboard.png

这个时候前端会报404

clipboard.png

如果在路由里不加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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

豆芽 2022-09-11 11:45:11

app.use(core())
放到最前面估计就好了

风吹雪碎 2022-09-11 11:45:11

因为我用的是koa2,所以用各种中间件的时候都要用支持koa2的版本。npm install koa-body@next即可

慵挽 2022-09-11 11:45:11

我也遇到这个问题,最后换了种做法,把app.use(koaBody())写成了单独一句,没把koaBody放到router中,就可以了。你呢,后面用什么方法解决的?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文