Estoy creando una aplicación REST API. Tengo un front-end (Nuxt.js) y una API (Express.js), y estoy tratando de enviar datos desde el front-end a la API. Api funciona en el puerto 3001 y al frente en el puerto 8010.
Entonces, el envío de datos se ve así:
Función en el frente:
methods: { async postTip() { const test = await postTipFunc({ content: this.tipContent }) } } Aquí está la función postTipFunc (project_front/api/index.js) :
import axios from "axios"; process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' const api = axios.create({ baseURL: 'http://localhost:8010/', headers: { 'Content-Type': 'application/json' } }) export const postTipFunc = async payload => { const { data } = await api.post(`pt`, payload) return data } Aquí está el punto final que va al back-end (project_front/server/routes/index.js) :
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' const { Router } = require('express') const axios = require('axios') const dotenv = require('dotenv') dotenv.config() const api = axios.create({ baseURL: "http://localhost:3001/", }) const router = Router() router.post(`/pt`, async (req, res) => { try { const data = await api.post(`/post-tip`, req.body) res.json(data.data) } catch (e) { console.log(e) } }) module.exports = router Y finalmente back-end (prodect_api/src/routes/index.js) :
const router = require('express').Router(); const wrapAsync = require('./../middlewares/async') const tipController = require('../controllers/tip') router.post( "/post-tip", wrapAsync(tipController.postTip) ) module.exports = router; En realidad, esa función tipController.postTip solo recibe datos y los muestra en la consola, por lo que no tiene sentido mostrarlos.
Además, si puede ayudar, console.log() muestra datos solo aquí: project_front/api/index.js . Después de ese punto todo está undefined
Entonces, ¿cómo puedo solucionarlo?
Bien, aquí está la respuesta, para que las cosas funcionen, necesita instalar body-parse en su API. Así:
const bodyParser = require("body-parser"); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true}));¡Espero que ayude a alguien!