koa2 ctx.request.query не определяется, когда я делаю запрос ajax, но в почтальоне он отлично работает

koa2 ctx.request.query не определяется, когда я делаю запрос ajax, но он отлично работает, когда я делаю этот запрос «отправить» в почтальоне.

В почтальоне я могу получить объект запроса введите здесь описание изображения

Но через axios введите здесь описание изображения

Мой код запроса

<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 есть проблема, если он получает только определенную «форму».


person Jerry    schedule 25.04.2017    source источник


Ответы (1)


В вашем примере Postman параметры передаются в строке запроса:

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

Это означает, что вы можете получить к ним доступ через ctx.request.query.

В вашем примере с Axios данные будут передаваться в теле запроса (что более характерно для запросов POST), что означает, что вам понадобится что-то вроде koa-bodyparser и получить доступ к данным через ctx.request.body.

person robertklep    schedule 25.04.2017