#javascript #node.js #rest #axios
Вопрос:
Я создаю приложение REST API. У меня есть интерфейс (Nuxt.js) и API (Express.js), и я пытаюсь отправить данные из интерфейса в API. Api работает на порту 3001, а интерфейс-на порту 8010.
Итак, отправка данных выглядит следующим образом:
Функция на передней панели:
methods: {
async postTip() {
const test = await postTipFunc({
content: this.tipContent
})
}
}
Вот 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(`p-t`, payload)
return data
}
Вот конечная точка, которая ведет в серверную часть (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(`/p-t`, 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
И, наконец, бэк-энд (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;
На самом деле, эта функция tipController.postTip
просто получает данные и показывает их в консоли, так что нет смысла их показывать.
Также, если это может помочь, console.log()
показывает данные только здесь — project_front/api/index.js
. После этого момента все становится undefined
Итак, как я могу это исправить?
Ответ №1:
Хорошо, вот ответ, чтобы все работало, вам нужно установить body-parse
в свой API. Именно так:
const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
Надеюсь, это кому-нибудь поможет!