stringtranslate.com

Rack (interfaz de servidor web)

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 agrupan en una única llamada de método que maneja solicitudes y respuestas HTTP .

Rack es utilizado por muchos frameworks y bibliotecas web Ruby , como Ruby on Rails y Sinatra . Está disponible como Ruby Gem . Muchas aplicaciones 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 de una aplicación Rack es que el objeto de aplicación responde al método de llamada. El método de llamada toma el objeto de entorno como argumento y devuelve el objeto de respuesta de Rack.

Ambiente[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

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

Respuesta del rack[7]

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

Rack::Response proporciona una interfaz práctica para crear una respuesta de Rack. La clase Rack::Response está definida en lib/rack/response.rb. Para utilizar la clase Response, instancéela desde la capa de middleware hacia abajo en la pila. Se puede utilizar para modificar las cookies.

Middleware en racks[7]

Rack facilita la incorporación de una cadena de componentes de middleware entre la aplicación y el servidor web. Se pueden utilizar varios componentes de middleware en el rack, lo que modifica la solicitud/respuesta antes de pasarla al siguiente componente. Esto se denomina pila de middleware.

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

Ejemplo de aplicación

Una aplicación " Hello World " compatible con Rack en sintaxis Ruby :

# helloWorld.ru # La aplicación que tiene definido el método de llamada. class HelloWorld # Método de llamada que devolverá 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 end           ejecutar HelloWorld . nuevo 

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. ^ "Lanzamientos - 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). Recuperado el 20 de septiembre de 2013.
  3. ^ jack - introducción Archivado el 17 de diciembre de 2014 en Wayback Machine . Jackjs.org. Consultado el 20 de septiembre de 2013.
  4. ^ ring - introducción. GitHub.com. Recuperado el 20 de abril de 2020.
  5. ^ clacklisp.org. Recuperado el 17 de octubre de 2014.
  6. ^ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana. Asp.net. Recuperado el 1 de octubre de 2014.
  7. ^ abc "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 .

Enlaces externos