Estoy trabajando en un pequeño proyecto apasionante y, hasta ahora, la mayor parte de mi trabajo js ha sido del lado del cliente. Estoy empezando a profundizar en el trabajo del lado del servidor ahora, pero estoy un poco perdido en este momento.
Básicamente, tengo una pregunta doble.
<form action="/receive" method="post"> <button class="btn btn-primary results-share-results" data-bs-dismiss="modal"> </form>En general, ¿cómo tomaría un formulario como este de arriba y recibiría su solicitud POST en un programa node.js? Creo que mi bloqueo principal es como "dónde" va esta solicitud POST. ¿A qué lo estoy señalando? ¿Y qué en el programa del nodo lo está recibiendo?
Más específicamente para mi proyecto, me gustaría que ese botón active un POST que envíe datos que he almacenado en un objeto a un script de nodo. Este script recibiría estos datos y luego los escribiría en un archivo JSON o en una base de datos (todavía no estoy en el nivel de la base de datos, por lo que un archivo JSON servirá por ahora).
¡Gracias de antemano!
Honestamente, en su mayoría he buscado a tientas algunos videos de YouTube. Puedo entender cómo funciona una solicitud POST/GET para una API, pero me cuesta entender cómo funcionan las llamadas a un archivo local o a una base de datos.
Esta no es una pregunta fácil de responder, pero espero poder orientarte en la dirección correcta. Lo primero que debe saber es que NodeJS solo tiene una API mínima. Escribir una API web completa en Node no es un ejercicio que recomendaría, especialmente si es nuevo en el desarrollo de back-end.
Para escribir una API funcional en Node.js, le recomiendo que use un marco como ExpressJS. Este marco es lo suficientemente simple de usar y le ahorrará mucho trabajo que tendría que hacer manualmente si usa la API nativa de Node.js.
Un ejemplo simple de express:
const express = require('express); const app = express(); app.get('/receive', function(req, res) { //handle your request here. } ); app.listen(3000);Ahora, cuando su frontend envíe el formulario anterior usando un verbo HTTP GET, el backend del nodo lo manejará llamando a la función pasada como segundo argumento a app.get(). El parámetro req tendrá los datos enviados y el parámetro res tiene funciones que puede usar para enviar una respuesta JSON a la interfaz.
Tenga en cuenta que estoy usando un verbo GET en lugar de un POST. Recibir una publicación en realidad requiere el uso del módulo npm del analizador corporal como un middleware. El middleware son funciones que actúan sobre la solicitud antes de llamar a su función de controlador. Como esta respuesta no pretende ser un tutorial, dejaré el trabajo de investigar cómo usar el analizador corporal para el OP. Hay un montón de ejemplos por ahí.
Recuerde que su función de controlador debe llamar a res.json() o a uno de los otros métodos en el objeto res para responder al cliente; de lo contrario, el navegador esperará "para siempre" (hasta que se agote el tiempo de espera de la solicitud).
Bonificación: use el nodo writeFileSync() para escribir su archivo JSON en el disco. Sin embargo, para una aplicación de producción, use la versión asíncrona de esta función.
Con suerte, esto al menos lo orientará en la dirección correcta. ¡Bienvenido al lado backend del desarrollo!