javascript - 使用koa-body之后,koa-router匹配不到路由?
PHP中文网
PHP中文网 2017-04-11 11:44:38
[JavaScript讨论组]

//路由

//前端请求

这个时候前端会报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);
                    })
                }
            }
        }
    }
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
巴扎黑

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

PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号