Rack (rozhraní webového serveru) - Rack (web server interface)
![]() | |
Původní autoři | Lea Neukirchen |
---|---|
Vývojáři | James Tucker, Josh Peek, José Valim, Michael Fellinger, Aaron Patterson, Santiago Pastorino, Konstantin Haase |
Stabilní uvolnění | 2.2.3 / 15. června 2020[1] |
Úložiště | ![]() |
Operační systém | Cross-platform |
Typ | Middleware |
Licence | Licence MIT |
webová stránka | nosič![]() |
Nosič je modulární rozhraní mezi webové servery a webové aplikace vyvinut v Programovací jazyk Ruby. S Rackem aplikační programovací rozhraní (API) pro webové rámce a middleware jsou zabalené do jednoho volání metody zacházení HTTP požadavky a odpovědi.
Rack je používán mnoha webovými rámci Ruby a knihovny, jako Ruby on Rails a Sinatra. Je k dispozici jako Ruby Klenot. Mnoho aplikací Ruby se nazývá „kompatibilní s racky“.[2]
Rack inspiroval podobné rámce v JavaScript[3] (jack.js), Clojure,[4] Perl (Plack ), Společný Lisp (Clack),[5] a .SÍŤ (OWIN ).[6]
Přehled
Vlastnosti aplikace Rack spočívají v tom, že objekt aplikace reaguje na metodu volání. Metoda volání převezme objekt prostředí jako argument a vrátí objekt odpovědi Rack.
životní prostředí[7]
Prostředí, které je metodou volání bráno jako argument, odkazuje na objekt, který má:
a) Informace o požadavku HTTP
To zahrnuje informace jako:
- Metoda požadavku HTTP
- The URL informace (informace, které by směřovaly do aplikace, informace, které směřují do skutečného umístění v aplikaci, Řetězec dotazu )
- Informace o serveru, jako je název serveru a port serveru
- HTTP metavariable které jsou přijaty od klienta
b) Informace specifické pro stojan
To zahrnuje informace jako
- Verze spuštěné aplikace Rack
- Schéma adresy URL, které se používá, to znamená, pokud je přijatým požadavkem http nebo https.
- Nezpracovaná data HTTP.
- Ruby objekt pro hlášení chyb.
- Informace, jako kdyby byl objekt aplikace vyvolán současně z jiného vlákna nebo procesu.
- Informace o očekáváních a schopnostech serveru (schopnost serveru pro únos připojení).
V případě, že se aplikace používá jako middleware, může prostředí obsahovat objekty, které by poskytovaly informace o relaci, možnosti protokolování, informace o velikosti dat, která lze použít pro čtení a zápis atd. Kromě toho může server ukládat svá vlastní data do prostředí.
Odpověď na stojan[7]
Objekt serveru Rack vrátí odpověď, která obsahuje tři části: stav, záhlaví a tělo.
- Stav obsahuje Stavové kódy HTTP například 200 404.
- Záhlaví obsahuje odpověď pro každého a udává páry klíč – hodnota. Klíče musí být řetězce.
- Text obsahuje konečná data, která jsou zasílána serverem žadateli.
Rack :: Response poskytuje pohodlné rozhraní pro vytvoření odpovědi Rack. Třída Rack :: Response je definována v lib / rack / response.rb. Chcete-li použít třídu Response, vytvořte ji instanci z vrstvy middlewaru dolů do zásobníku. Lze jej použít k úpravě souborů cookie.
Middleware v regálech[7]
Rack usnadňuje přidání řetězce middleware komponenty mezi aplikací a webovým serverem. Ve stojanu lze použít více komponent middlewaru, které upravují požadavek / odpověď před předáním další komponentě. Tomu se říká middleware stack.
Server Rack ve výchozím nastavení přidává více prostředního middlewaru pro funkce, jako je zobrazení výjimky se všemi podrobnostmi,[8] ověření požadavku a odpovědí podle specifikace Rack[9] atd.
Příklad aplikace
Kompatibilní s rackem “Ahoj světe "aplikace v Rubín syntax:
# helloWorld.ru# Aplikace, která má definovanou metodu volání.třída Ahoj světe # Metoda volání, která vrátí stavový kód HTTP, typ obsahu a obsah. def volání (env) [200, {"Typ obsahu" => „text / html; charset = utf-8“}, ["Ahoj světe"]] koneckonec
Server výše uvedeného kódu lze spustit pomocí „rackup helloWorld.ru“ a je k němu přístup na adrese http: // localhost: 9292 / Výchozí port používaný aplikací Rack je 9292.
Viz také
- Python WSGI
- Perl PSGI
- Javascript JSGI
- Vložit Python
- Smalltalk u moře
- FastCGI
- Servlet Java
- JavaScript na straně serveru
- Apache JServ Protocol
- ZeroC Ice
- Cisco Etch
- ISAPI Programovací rozhraní aplikace pro internetový server (Microsoft)
Reference
- ^ „Uvolnění - stojan / stojan“. Citováno 20. června 2020 - přes GitHub.
- ^ Pancake: How to Stack and Loosely Couple Rack-Based Webapps together. Rubyinside.com (04.12.2009). Citováno 2013-09-20.
- ^ jack - úvod Archivováno 17. 12. 2014 na Wayback Machine. Jackjs.org. Citováno 2013-09-20.
- ^ prsten - úvod. GitHub.com. Citováno 2020-04-20.
- ^ clacklisp.org. Citováno 2014-10-17.
- ^ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana. Asp.net. Citováno 2014-10-01.
- ^ A b C "Dokumentace pro stojan". www.rubydoc.info. Citováno 2016-09-14.
- ^ „Rack :: ShowExceptions“. www.rubydoc.info. Citováno 2016-09-14.
- ^ „Rack :: Lint“. www.rubydoc.info. Citováno 2016-09-14.