581 words
3 minutes
2.9 Comunicación Entre Cliente Y Servidor En Rails

[!Note] Realizar la configuración de la foto.

El framework Rails permite integrar de forma transparente el diseño (CSS), la base de datos (DB) y el seguimiento automatizado del código, similar al control que se aplica en metodologías ágiles. Podemos usar tailwind u otro framework de CSS para personalizar la interfaz sin perder la estructura del proyecto.


1. HTML o JSON: ¿Cuándo usar cada uno?#

Cuando hacemos clic en una ruta, podemos observar el tipo de respuesta en:

Network → 200 - Products → Headers → Response Headers → content-type

Ahí vemos si la respuesta se devuelve en HTML o JSON, según lo que solicita el cliente. Por defecto, el navegador usa HTML, mientras que las APIs o clientes externos (como RapidAPI Client) utilizan JSON.

Ejemplo de ejecución del servidor:

Started GET "/products" for 127.0.0.1 at 2025-10-15 12:32:35 -0600
Processing by ProductsController#index as */*
Rendering products/index.html.erb
Product Load (0.3ms) SELECT "products".* FROM "products"
Completed 200 OK in 78ms

Rails maneja automáticamente la respuesta según el formato pedido.


2. Visualización de rutas#

Podemos consultar todas las rutas disponibles con:

bin/rails routes

Y acceder a una versión en JSON con:

https://localhost:3000/products/1.json

Rails administra las cookies y las sesiones internamente, incluso si no las declaramos. Recordemos que HTTP/1.1 no tiene memoria, por eso cada solicitud debe enviar su contexto (por ejemplo, el id del producto).


3. Flujo de edición y actualización#

Cuando editamos un producto, se ejecuta algo como:

Started GET "/products/2/edit" for 127.0.0.1
Processing by ProductsController#edit as HTML
Rendering products/edit.html.erb

Y el formulario HTML que se muestra incluye un token de autenticidad para proteger la sesión:

<form action="/products/2" method="post">
<input type="hidden" name="_method" value="patch">
<input type="hidden" name="authenticity_token" value="...">
<label for="product_name">Name</label>
<input type="text" name="product[name]" id="product_name" value="Pants">
</form>

Al presionar Update, el servidor recibe un método PATCH, que actualiza los datos en la base de datos:

Processing by ProductsController#update as TURBO_STREAM
Parameters: {"product" => {"name" => "Pants"}}
Product Update (0.5ms) UPDATE "products" SET "name" = 'Pants'
Completed 302 Found → Redirected to /products/2

El código 302 indica redirección (post-edición), y 200 confirma que la página final cargó correctamente.


4. Codificación de datos en HTTP#

Existen dos formas principales de enviar datos:

  1. GET → Los parámetros van en la URL (URI). Ejemplo: https://localhost:3000/products?id=2
  2. POST → Los parámetros van dentro del cuerpo del mensaje, no visibles en la URL.

Rails usa PATCH (una extensión de POST) para actualizar recursos, donde el id se codifica dentro del URI. Esto sigue el principio REST, en el que las rutas y métodos HTTP definen las acciones sobre los recursos.


5. Introspección y generación automática#

Rails permite saber qué tipo de dato maneja cada elemento sin declararlo explícitamente, gracias a la introspección, lo que facilita validar, probar y mantener el código. Además, con los generadores de Rails, podemos crear estructuras CRUD completas:

Terminal window
bin/rails generate scaffold Product name:string price:decimal

Esto crea controladores, vistas, modelos y migraciones automáticamente, reflejándose en la base de datos.


Reflexión final#

Este apunte muestra cómo Rails automatiza la comunicación entre cliente y servidor, manejando rutas, formularios, validaciones y respuestas HTML o JSON. La comprensión de este flujo —de la solicitud al controlador y de vuelta al navegador— permite desarrollar aplicaciones web más seguras, coherentes y fáciles de mantener.


Glosario#

TérminoDefinición
PumaServidor web integrado en Rails para ejecutar aplicaciones Ruby.
Token de autenticidadValor generado por Rails para proteger los formularios contra ataques CSRF.
JSON (JavaScript Object Notation)Formato ligero para intercambio de datos entre cliente y servidor.
PATCHMétodo HTTP usado para modificar parcialmente un recurso.
IntrospecciónCapacidad de un lenguaje o framework para reconocer el tipo y atributos de un objeto en tiempo de ejecución.
REST (Representational State Transfer)Estilo arquitectónico que define cómo interactúan los recursos web mediante rutas y métodos HTTP.
302 / 200Códigos de estado HTTP que indican redirección y respuesta exitosa, respectivamente.
2.9 Comunicación Entre Cliente Y Servidor En Rails
https://jangelmm.github.io/posts/informatica/ingenieriasoftware/programacion-web/2-html-xml-y-css/29-comunicación-entre-cliente-y-servidor-en-rails/
Author
Jesús Ángel Martínez Mendoza
Published at
2025-10-16
License
CC BY-NC-SA 4.0