Hey everyone,
I’m having a problem when trying to set up my API on a Netlify server.
This API is perfectly working on postman but not on my web app published on Netlify.
This are the codes:
netlify.toml
[build]
functions = "functions"
[[headers]]
# Define which paths this specific [[headers]] block will cover.
for = "/*"
[headers.values]
Access-Control-Allow-Origin = "*"
api.js
const express = require('express');
const serverless = require('serverless-http');
const mysql = require('mysql')
const app = express();
const router = express.Router();
const cors = require('cors')
//Get all students
router.get('/', (req, res) => {
res.send('App is corriendo...');
});
const db = mysql.createPool( {
host: 'xxxxxx',
user: 'xxxxx',
password: 'xxxxx',
database: 'xxxxx'
})
let users = [
{
id: 1,
nombre: "Juan"
}
]
router.get("/users", (req, res) => {
res.json(users)
})
router.get("/info", (req, res) => {
const sqlSelect = "SELECT * FROM contacto"
db.query(sqlSelect, (err, result) => {
if(err){
res.send("error")
} else {
res.send(result)
}
})
})
router.post('/enviarmensaje', (req, res) => {
console.log("hey")
const nombreContacto = req.body.nombreContacto
const apellidoContacto = req.body.apellidoContacto
const correoContacto = req.body.correoContacto
const asuntoContacto = req.body.asuntoContacto
const mensajeContacto = req.body.mensajeContacto
const sqlInsert = "INSERT INTO `contacto` (`id_contacto`, `nombre`, `apellido`, `email`, `asunto`, `mensaje`) VALUES (NULL, ?, ?, ?, ?, ?);"
db.query(sqlInsert, [nombreContacto, apellidoContacto, correoContacto, asuntoContacto, mensajeContacto], (err, result) => {
console.log(result)
})
})
app.use('/.netlify/functions/api', router);
app.use(cors())
router.use(cors())
module.exports.handler = serverless(app);
And finally the client-side:
const enviarMensajeContacto = (event) => {
event.preventDefault();
Axios.post("https://bellumserver.netlify.app/.netlify/functions/api/enviarmensaje", { nombreContacto: nombreContacto, apellidoContacto: apellidoContacto, correoContacto: correoContacto, asuntoContacto: asuntoContacto, mensajeContacto: mensajeContacto }).then(() => {
alert("bien")
setPosts([nombreContacto, res.data])
}).catch(e => {
console.log(e)
})
}
I’m using cors on the server and added the header to the netlify.toml
I don’t know what else to do. Thanks for your time.