Quiero configurar una ruta POST en mi carpeta api usando next.js, y estoy enviando los datos a la ruta, pero no puedo analizar los datos para guardarlos en la base de datos. ¿Cuál es la mejor manera de manejar las rutas POST en next.js? particularmente analizando los datos en formato JSON ?
Para que las solicitudes POST funcionen en las rutas API de Next.js, es probable que desee hacer 3 cosas.
POSTJSON.parse() para analizar el JSON en la rutaLas rutas API en Next.js admiten de forma predeterminada todos los tipos de solicitudes, incluidas GET, POST, DELETE, etc. Por lo tanto, si bien no es necesario, es una buena idea restringir la ruta a los métodos que desea admitir.
En su caso, si solo desea admitir solicitudes POST en una ruta determinada, use req.method para filtrar las solicitudes que no son posteriores.
if (req.method !== 'POST') { res.status(405).send({ message: 'Only POST requests allowed' }) return } Para analizar el JSON, todo lo que puede usar JSON.parse() .
const body = JSON.parse(req.body)Póngalo todo junto, y su ruta API debería verse así:
// pages/route-name.js export default function handler(req, res) { if (req.method !== 'POST') { res.status(405).send({ message: 'Only POST requests allowed' }) return } const body = JSON.parse(req.body) // the rest of your code }Por último, debe enviar una solicitud POST desde su código de front-end al backend. Es posible que ya sepa cómo hacer esto, pero mencione esto para completar.
fetch('/api/route-name', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(objectWithData), }) Aparte rápido, no necesita preocuparse por la compatibilidad entre navegadores para fetch con Next.js. Next.js agrega automáticamente un polyfill cuando es necesario .