Guardar Datos en una Base de Datos
Leer es solo la mitad de la historia. Gestionemos envíos de formularios para que los usuarios puedan escribir datos en tu base de datos. El patrón es siempre el mismo: lee el cuerpo, valida, inserta, responde.
Un endpoint POST lee campos de formulario del cuerpo de la solicitud:
POST "/messages" :\n string content = req.body("content")\n string author = req.body("author")\n if content == ""\n return http.respond(400, "text/plain", "Content is required")\n string params = "[\\"" + author + "\\", \\"" + content + "\\"]"\n db.query("INSERT INTO messages (author, content) VALUES (?, ?)", params)\n return http.respond(201, "text/plain", "Message saved!")POST /messages (with form data) → 201 Message saved!\nPOST /messages (empty content) → 400 Content is requiredreq.body("campo") lee un campo de formulario del cuerpo POST. Valida antes de insertar — devuelve 400 para entradas incorrectas. Devuelve 201 Created cuando se crea exitosamente un nuevo recurso. El orden de params debe coincidir con el orden de marcadores ? en tu SQL.
Un par de rutas completo: GET muestra el formulario, POST lo procesa:
GET "/messages/new" :\n html:\n \n\n POST "/messages" :\n string content = req.body("content")\n string author = req.body("author")\n if content == ""\n return http.respond(400, "text/plain", "Content is required")\n string params = "[\\"" + author + "\\", \\"" + content + "\\"]"\n db.query("INSERT INTO messages (author, content) VALUES (?, ?)", params)\n return http.respond(200, "text/html", "Saved! Send another
")GET /messages/new → HTML form\nPOST /messages → 200, confirmation messageGET muestra el formulario, POST lo procesa. Este par GET-POST es la base de cada formulario web. En producción redirigirías después del POST para evitar el envío doble, pero este patrón es el punto de partida correcto.
Resumen rápido
- Los endpoints POST usan req.body("nombreCampo") para leer los campos del formulario enviado
- Valida la entrada antes de escribir en la base de datos — devuelve 400 para datos inválidos
- 201 Created es el estado convencional para un recurso creado exitosamente
- Construye params como un array JSON — los valores deben coincidir con el orden de marcadores ?