Jump to content

Стойка (интерфейс веб-сервера)

Rack, интерфейс веб-сервера Ruby
Оригинальный автор(ы) Лия Нойкирхен
Разработчик(и) Джеймс Такер, Джош Пик, Хосе Валим, Майкл Феллингер, Аарон Паттерсон, Сантьяго Пасторино, Константин Хаазе
Стабильная версия
3.0.2 / 5 декабря 2022 г .; 19 месяцев назад ( 05.12.2022 ) [1]
Репозиторий
Операционная система Кросс-платформенный
Тип Промежуточное ПО
Лицензия МОЯ лицензия
Веб-сайт стойка .github .что  Edit this on Wikidata

Rack — это модульный интерфейс между веб-серверами и веб-приложениями, разработанный на языке программирования Ruby . С помощью Rack интерфейсы прикладного программирования (API) для веб-платформ и промежуточного программного обеспечения заключены обрабатывающий в единый вызов метода, HTTP -запросы и ответы .

Rack используется многими веб-фреймворками и библиотеками Ruby , такими как Ruby on Rails и Sinatra . Он доступен в виде Ruby Gem . Многие приложения Ruby называются «совместимыми со стойкой». [2]

Rack вдохновил на создание подобных фреймворков в JavaScript. [3] (jack.js), Clojure , [4] Perl ( Plack ), Common Lisp (Clack), [5] и .NET ( ОВИН ). [6]

Характеристика приложения Rack заключается в том, что объект приложения реагирует на вызов метода. Метод вызова принимает объект среды в качестве аргумента и возвращает объект ответа Rack.

Среда, которая принимается в качестве аргумента методом вызова, относится к объекту, который имеет:
а) Информация о HTTP-запросе

Сюда входит такая информация, как:

  • Метод HTTP-запроса
  • Информация об URL -адресе (информация, которая будет направлена ​​в приложение, информация, которая ведет к фактическому местоположению в приложении, строка запроса ).
  • Информация о сервере, такая как имя сервера и порт сервера.
  • HTTP Метапеременные , полученные от клиента.

б) Информация о стойке

Сюда входит такая информация, как

  • Версия запущенного приложения Rack.
  • Используемая схема URL-адреса, то есть полученный запрос http или https.
  • Необработанные данные HTTP.
  • Объект Ruby для сообщения об ошибках.
  • Информация, например, вызывается ли объект приложения одновременно из другого потока или процесса.
  • Информация об ожиданиях и возможностях сервера (возможность перехвата соединения).

Если приложение используется в качестве промежуточного программного обеспечения, среда может иметь объекты, которые будут предоставлять информацию о сеансе, возможности ведения журнала, информацию о размере данных, которые можно использовать для чтения и записи и т. д. В дополнение к этому сервер может хранить свои собственные данные в окружающей среде.

Ответ стойки [7]

[ редактировать ]

Объект стоечного сервера возвращает ответ, который содержит три части: статус, заголовки и тело.

  • Статус содержит коды состояния HTTP, например 200,404.
  • Заголовок содержит ответ для каждого и дает пары ключ-значение. Ключи должны быть строками.
  • Тело содержит окончательные данные, которые отправляются сервером запрашивающей стороне.

Rack::Response предоставляет удобный интерфейс для создания ответа Rack. Класс Rack::Response определен в lib/rack/response.rb. Чтобы использовать класс Response, создайте его экземпляр на уровне промежуточного программного обеспечения вниз по стеку. Его можно использовать для изменения файлов cookie.

Промежуточное ПО в стойках [7]

[ редактировать ]

Rack позволяет легко добавить цепочку компонентов промежуточного программного обеспечения между приложением и веб-сервером. В стойке можно использовать несколько компонентов промежуточного программного обеспечения, которые изменяют запрос/ответ перед передачей его следующему компоненту. Это называется стеком промежуточного программного обеспечения.

Сервер Rack по умолчанию добавляет несколько промежуточных программ для таких функций, как отображение исключений со всеми подробностями, [8] проверка запроса и ответов в соответствии со спецификацией стойки [9] и т. д.

Пример приложения

[ редактировать ]

Rack-совместимое приложение « Hello World » в синтаксисе Ruby :

# helloWorld.ru
# The application that has the call method defined.
class HelloWorld
  # Call method that would return the HTTP status code, the content type and the content.
  def call (env)
    [200, {"content-type" => "text/html; charset=utf-8"}, ["Hello World"]]
  end
end

run HelloWorld.new

Сервер для приведенного выше кода можно запустить с помощью «rackup helloWorld.ru», а доступ к нему можно получить по адресу http://localhost:9292/. Порт по умолчанию, используемый приложением Rack, — 9292.

См. также

[ редактировать ]
  1. ^ «Выпуски – стойка/стойка» . Проверено 5 декабря 2022 г. — через GitHub .
  2. ^ Pancake: Как складывать и свободно соединять стоечные веб-приложения вместе . Rubyinside.com (04 декабря 2009 г.). Проверено 20 сентября 2013 г.
  3. ^ Джек - введение. Архивировано 17 декабря 2014 г. в Wayback Machine . Jackjs.org. Проверено 20 сентября 2013 г.
  4. ^ кольцо - введение . GitHub.com. Проверено 20 апреля 2020 г.
  5. ^ clacklisp.org . Проверено 17 октября 2014 г.
  6. ^ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana . Asp.net. Проверено 1 октября 2014 г.
  7. ^ Jump up to: а б с «Документация на стойку» . www.rubydoc.info . Проверено 14 сентября 2016 г.
  8. ^ "Rack::ShowExceptions" . www.rubydoc.info . Проверено 14 сентября 2016 г.
  9. ^ "Стойка::Линт" . www.rubydoc.info . Проверено 14 сентября 2016 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fdf53c69314ec09cc4a738234639ac45__1708151760
URL1:https://arc.ask3.ru/arc/aa/fd/45/fdf53c69314ec09cc4a738234639ac45.html
Заголовок, (Title) документа по адресу, URL1:
Rack (web server interface) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)