Tengo un pequeño problema con mi "servidor". Entonces, mientras trato de aprender la comunicación de backend a frontend, estaba jugando e intentando crear una "api". De todos modos, cada vez que intento enviar una solicitud POST, el servidor responde con el error net::ERR_ABORTED 405 y no imprime nada en el servidor. Uso la extensión VSC Live Server y ejecuto el servidor en mi PC (durante la prueba), no estoy seguro de si eso puede afectar algo.
Interfaz:
<!DOCTYPE html> <html> <head> <title>Testing</title> <link href="https://fonts.googleapis.com/css2?family=Gemunu+Libre:wght@300&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700,800,900" rel="stylesheet"> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <link rel="icon" href="/img/Senko.jpg"> </head> <body> <script> console.log("Running...") const data = { age: "15", name: "John Doe", date: "21/12/2021" } const options = { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data), } fetch("/api", options) </script> </body> </html>back-end
const express = require('express'); const app = express(); app.listen(5500, () => console.log('listening at 5500'));//Doesnt work no matter what I listen to. app.use(express.static('public')); app.use(express.json({ limit: '1mb' })); const allData = []; app.post('/api', (request, response) => { const data = request.body; allData.push(data); response.json(allData); console.log(allData); });El mensaje de error:
POST http://127.0.0.1:5500 net::ERR_ABORTED (Method not allowed)Agradezco cualquier ayuda aquí.
Escribiste que estás usando el servidor VSC en vivo. Sin embargo, eso no tiene sentido, ya que tienes tu propio backend. La extensión del servidor en vivo solo servirá sus archivos estáticos, por lo que cuando su interfaz intente enviar POST a su API, irá al servidor VSC en vivo, no a su API, y le dirá que no admite solicitudes POST (además, hay sin carpeta public/api )! Pero ni siquiera necesita esa extensión, ya que su backend también está configurado para servir los archivos estáticos de public .
Deshabilite la extensión del servidor en vivo y, en su lugar, inicie su propio backend, utilizando npm start en el shell. (O, si aún no ha configurado el script de start en su package.json , lo que debería hacer, intente node server.js ).