Как мне заполнить мой параметр req.body с помощью axios (Vue.js) на моем сервере Express.js

Я пытаюсь отправить вызов подключения к моему api из моего vue (я использую vue.js), но когда я получаю объект req.body в моей спине, объект пуст

Я прочитал это: Запрос на отправку Axios. Body — пустой объект но это не помогло мне

(он работает из Postman с заполненным телом и опцией x-www-form-encoded)

я получил это из моего Vue: My vue service.js

import Axios from 'axios';

class APIClient {
    constructor () {
        this.client = Axios.create({
            baseURL: 'https://localhost:8080'
        });
    }

    async connect () {

        const params = new URLSearchParams();
        params.append('mail', 'test');
        params.append('pwd', 'mypwd');
        return await this.client.get('/api/user/auth', params);

    }

и у меня в спине: index.ts:


import express from "express";
var cors = require('cors');
import "reflect-metadata";
var bodyParser = require('body-parser')

const http = require('http');
const MainRouter = require('./routes/main_router');

let port = 8080;
const server = express();

server.use(cors({origin: true}))
server.use(bodyParser.json());
server.use(bodyParser.urlencoded({extended: true}))

let mainRouter = new MainRouter(server);

const httpServer = http.createServer(server);
httpServer.listen(port);
console.log('Server is listening');

и main_router.ts


import express from 'express';
import mysql from "promise-mysql";

export default class MainRouter {

    public server: express.Express;
    
    constructor (server: express.Express) {
        super();
        this.server = server; 
        this.server.get("/api/user/auth", async (req: any, res: any) => {
            if (req.body) //the req.body is equal to {} instead of {mail: 'test', ...
                return res.json(await this.userManager.getUserByCredidentials(req.body));
            else return res.json([])
        });    
    }
}

module.exports = MainRouter;

Я не знаю, есть ли у меня что-то добавить в свой экспресс-сервер или в свой vue с аксиомами?

См. также:  Асинхронная функция не завершается
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Jesus
    1. Вы передаете mail и pwd как параметры GET, а не в теле запроса. Вы можете получить доступ к req.query, но ….
    2. Вам следует избегать отправки кредитов в качестве параметров URL-адреса с помощью GET, вместо этого используйте тело и POST. Для получения дополнительной информации см. этот пост.

    Вот пример:

    return await this.client.post('/api/user/auth', {
       mail: "test",
       pwd: "mypwd"
    });
    

    и конечно не забудьте поменять this.server.get("/api/user/auth",... на this.server.post("/api/user/auth",...

    хорошо, спасибо, это сработало! я не буду передавать кредиты через свой URL person Jesus; 11.03.2021

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: