Articulo de referencia

Rack (interfaz del servidor web)

{{cite web|url=https://github.com/rack/rack/releases|title=Releases - rack/rack|via=[[GitHub]]|accessdate=5 December 2022}} "},"operating system":{"wt":"[[Cross-platform]]"},"pl...

Rack es una interfaz modular entre servidores web y aplicaciones web desarrolladas en el lenguaje de programación Ruby . Con Rack, las interfaces de programación de aplicaciones (API) para frameworks web y middleware se integran en una única llamada a un método que gestiona las solicitudes y respuestas HTTP .

Rack es utilizado por muchos frameworks y bibliotecas web de Ruby , como Ruby on Rails y Sinatra . Está disponible como una gema de Ruby . Muchas aplicaciones de Ruby se denominan "compatibles con Rack". [ 2 ]

Rack ha inspirado marcos similares en JavaScript [ 3 ] (jack.js), Clojure , [ 4 ] Perl ( Plack ), Common Lisp (Clack), [ 5 ] y .NET ( OWIN ). [ 6 ]

Descripción general

La característica principal de una aplicación Rack es que el objeto de la aplicación responde al método de llamada. Este método recibe como argumento el objeto de entorno y devuelve el objeto de respuesta de Rack.

Ambiente

Fuente: [ 7 ]

El entorno que se toma como argumento por el método de llamada se refiere a un objeto que tiene: a) Información sobre la solicitud HTTP

Esto incluye información como:

b) Información específica del rack

Esto incluye información como

  • La versión de la aplicación Rack que se está ejecutando
  • El esquema de URL que se utiliza, es decir, si la solicitud que se recibe es http o https.
  • Los datos HTTP sin procesar.
  • Un objeto Ruby para informar de errores.
  • Información como por ejemplo si el objeto de la aplicación se invoca simultáneamente desde otro hilo o proceso.
  • Información sobre las expectativas y capacidades del servidor (capacidad del servidor para el secuestro de conexiones).

En caso de que la aplicación se utilice como middleware, el entorno puede contener objetos que proporcionen información de sesión, capacidades de registro, información sobre el tamaño de los datos que se pueden utilizar para lectura y escritura, etc. Además, el servidor puede almacenar sus propios datos en el entorno.

Respuesta en rack

Fuente: [ 7 ]

El objeto del servidor Rack devuelve una respuesta que contiene tres partes: el estado, los encabezados y el cuerpo.

  • El estado contiene los códigos de estado HTTP, como 200 y 404.
  • El encabezado contiene la respuesta para cada elemento y proporciona los pares clave-valor. Las claves deben ser cadenas de texto.
  • El cuerpo contiene los datos finales que el servidor envía al solicitante.

Rack::Response proporciona una interfaz práctica para crear una respuesta de Rack. La clase Rack::Response se define en lib/rack/response.rb. Para usar la clase Response , instánciela desde la capa de middleware hacia abajo en la pila. Se puede usar para modificar las cookies.

Middleware en racks

Fuente: [ 7 ]

Rack facilita la adición de una cadena de componentes de middleware entre la aplicación y el servidor web. Se pueden usar varios componentes de middleware en Rack, los cuales modifican la solicitud/respuesta antes de pasarla al siguiente componente. Esto se conoce como pila de middleware.

El servidor Rack agrega por defecto varios middleware intermedios para funcionalidades como mostrar excepciones con todos los detalles, [ 8 ] validar las solicitudes y respuestas de acuerdo con la especificación Rack [ 9 ] etc.

Ejemplo de aplicación

Una aplicación " Hola Mundo " compatible con Rack en sintaxis Ruby :

# helloWorld.ru # La aplicación que tiene definido el método call. class HelloWorld # Método call que devolvería el código de estado HTTP, el tipo de contenido y el contenido. def call ( env ) [ 200 , { "content-type" => "text/html; charset=utf-8" }, [ "Hello World" ]] end endejecutar HelloWorld.new

El servidor para el código anterior se puede iniciar usando "rackup helloWorld.ru" y se puede acceder a él en http://localhost:9292/ El puerto predeterminado utilizado por la aplicación Rack es 9292.

Véase también

Referencias

  1. "Releases - rack/rack" . Consultado el 5 de diciembre de 2022 vía GitHub .
  2. Pancake: Cómo apilar y acoplar de forma flexible aplicaciones web basadas en Rack . Rubyinside.com (4 de diciembre de 2009). Consultado el 20 de septiembre de 2013.
  3. jack - introducción Archivado el 17/12/2014 en Wayback Machine . Jackjs.org. Consultado el 20/09/2013.
  4. anillo - introducción . GitHub.com. Consultado el 20 de abril de 2020.
  5. clacklisp.org . Consultado el 17 de octubre de 2014.
  6. https://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana . Asp.net. Consultado el 1 de octubre de 2014.
  7. 1 2 3 "Documentación para rack" . www.rubydoc.info . Consultado el 14 de septiembre de 2016 .
  8. "Rack::ShowExceptions" . www.rubydoc.info . Consultado el 14 de septiembre de 2016 .
  9. "Rack::Lint" . www.rubydoc.info . Consultado el 14 de septiembre de 2016 .
  • Sitio web oficialEdita esto en Wikidata