es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nextjs: 405 al enviar el formulario mediante POST

Siguiendo este tutorial, estoy tratando de enviar un formulario en Nextjs pero obtengo un error 405 cuando intento hacer POST a mi ruta de API. He intentado usar tanto axios como la fetch api. Esto debería ser algo simple de hacer, pero no estoy seguro de dónde me equivoqué. ¿Hay algo obvio que me esté perdiendo? ¡Gracias!

/survey/create

const handleSubmit = async (event) => {
    event.preventDefault();

const testData = {
  title: surveyTitle,
};

const res = await fetch("/api/survey", {
  method: "POST",
  body: JSON.stringify({
    dataName: testData,
  }),
  headers: {
    "Content-Type": "application/json",
  },
});
};

/api/survey
export default function handler(req, res) {
console.log(req.body);
res.status(200).json(JSON.stringify({ name: ‘Success’ }))
}
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar con la implementación de la solicitud POST. En la función handleSubmit, asegúrate de incluir la opción credentials: "same-origin" en la solicitud fetch:

    const res = await fetch("/api/survey", {
          method: "POST",
          credentials: "same-origin",
          body: JSON.stringify({
            dataName: testData,
          }),
          headers: {
            "Content-Type": "application/json",
          },
    });
    

    Además, asegúrate de que la ruta de la API esté configurada correctamente para manejar la solicitud POST. En el código de api/survey, intenta actualizar la función de la siguiente manera:

    export default function handler(req, res) {
      if (req.method === "POST") {
        const data = JSON.parse(req.body);
        console.log(data);
        res.status(200).json({ name: "Success" });
      }
    }
    

    Esto debería ayudar a asegurar que la solicitud y respuesta POST se manejen correctamente.

Comments are closed.