当我发出ajax请求时没有定义koa2 ctx.request.query但是在postman中它工作正常

时间:2017-04-25 07:17:50

标签: node.js axios koa2

当我发出一个ajax请求时,没有定义koa2 ctx.request.query但是当我做这个' post'邮递员要求。

在邮递员中,我可以获得查询对象 enter image description here

但是通过axios enter image description here

我的请求代码是

<template>
  <div id="login">
    <mt-field label="用户名" placeholder="请输入用户名" v-model="username"></mt-field>
    <mt-field label="密码" placeholder="请输入密码" type="password" v-model="password"></mt-field>
    <mt-button type="primary" @click="login">primary</mt-button>
  </div>
</template>

<script>

import Axios from 'axios'
export default {
  name: 'login',
  data () {
    return {
      username: '',
      password: ''
    }
  },
  mounted(){
    console.log(Axios)

  },
  methods: {
    login(){
      var username = this.username;
      var password = this.password;
      Axios({
        method: 'post',
        url: "api/user/login",
        data: {
          username: username,
          password: password,
        },
      }).then((res)=>{
        console.log(res)
        if(res.data.code !== 200) {
          console.log("登录失败")
        }
      });

    }
  }


}
</script>

后端:

'POST /api/user/login': async (ctx, next) => {
        ctx.response.type = 'application/json;charset=utf-8';
        console.log(ctx.request.query)
        await Db.User.login(ctx.query)
                .then(function(res){
                     ctx.response.body = res
                });
    }

我认为koa2 ctx.request.query存在一些问题,如果它只收到特定的&#39;形式&#39;

1 个答案:

答案 0 :(得分:0)

在Postman示例中,参数在查询字符串中传递:

POST /api/user/login?username=aa&password=aa

这意味着您可以通过ctx.request.query访问它们。

在Axios示例中,数据将在请求正文中传递(这对于POST请求更为常见),这意味着您需要koa-bodyparser之类的内容并通过{访问数据{1}}。