Vuejs выдает ошибку 400 (неверный запрос) на запрос топора ios - PullRequest
1 голос
/ 30 января 2020

У меня Nodejs на порте 5000 и Vuejs на порте 8080. Я использую vue cli 3. Сначала у меня возникла проблема с CORS, затем я просто исправил проблему с CORS, добавив модуль Koa-cors , Когда я использую КоАП restAPI в vuejs в качестве запроса POST. Выдает ошибку 400 (BAD REQUEST). Почему это идет? Есть ли какие-либо проблемы с синтаксисом при отправке запроса?

Api Response

RestAPI

import * as Koa from "koa";
import * as Router from "koa-router";
import * as koaBody from "koa-body";
import * as cors from "@koa/cors";


  const app = new Koa();
  const router = new Router();
  const PORT = 5000;

  app.use(cors());
  app.use(koaBody({multipart: true}));

  app.use(router.routes()).use(router.allowedMethods());

      router.post('/api/admin_login', async (ctx: Koa.Context, next: () => Promise<any>) => {

        var email = ctx.request.body.email;
        var password = ctx.request.body.password;

        const checkEmailExist = await Admin.findOne({email: email});
            if (checkEmailExist != null) {

                const pwCorrect = await bcrypt.compare(password, checkEmailExist.password);
                if (pwCorrect === true) {
                    ctx.body = {
                        status: 200,
                        message: "Admin login successfully",
                        data: checkEmailExist,
                    };
                } else {
                    ctx.body = {
                        status: 400,
                        message: "Incorrect password",
                    }
                }
            } else {
                ctx.body = {
                    status: 400,
                    message: "Invalid Email",
                };

            }
        }
    });

Vuejs Ax ios Post


 methods: {
            login() {
               const headers = {
                    'Content-Type': 'multipart/form-data; charset=UTF-8',
                    "Access-Control-Allow-Origin": "*",
                };

                this.$axios.post("http://localhost:5000/api/admin_login",
                    {
                        email: this.input.email,
                        password: this.input.password,
                    }, {
                        headers: headers
                    })
                    .then(response => {
                        console.log('data', data);
                    });
               }
        }

Main. js

import Vue from "vue";
Vue.prototype.$axios = axios;

Vue.config.productionTip = false;

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");


...