Стойка (интерфейс веб-сервера)
Оригинальный автор(ы) | Лия Нойкирхен |
---|---|
Разработчик(и) | Джеймс Такер, Джош Пик, Хосе Валим, Майкл Феллингер, Аарон Паттерсон, Сантьяго Пасторино, Константин Хаазе |
Стабильная версия | 3.0.2
/ 5 декабря 2022 г [1] |
Репозиторий | |
Операционная система | Кросс-платформенный |
Тип | Промежуточное ПО |
Лицензия | МОЯ лицензия |
Веб-сайт | стойка |
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.
Среда [7]
[ редактировать ]Среда, которая принимается в качестве аргумента методом вызова, относится к объекту, который имеет:
а) Информация о 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.
См. также
[ редактировать ]- Python WSGI
- Перл ПСГИ
- Javascript JSGI
- Питоновая паста
- Смоллток Приморский
- FastCGI
- Java-сервлет
- Серверный JavaScript
- Протокол Apache JServ
- ЗероС Лед
- Cisco травление
- ISAPI (Microsoft) Интерфейс прикладного программирования Интернет-сервера
Ссылки
[ редактировать ]- ^ «Выпуски – стойка/стойка» . Проверено 5 декабря 2022 г. — через GitHub .
- ^ Pancake: Как складывать и свободно соединять стоечные веб-приложения вместе . Rubyinside.com (04 декабря 2009 г.). Проверено 20 сентября 2013 г.
- ^ Джек - введение. Архивировано 17 декабря 2014 г. в Wayback Machine . Jackjs.org. Проверено 20 сентября 2013 г.
- ^ кольцо - введение . GitHub.com. Проверено 20 апреля 2020 г.
- ^ clacklisp.org . Проверено 17 октября 2014 г.
- ^ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana . Asp.net. Проверено 1 октября 2014 г.
- ^ Jump up to: а б с «Документация на стойку» . www.rubydoc.info . Проверено 14 сентября 2016 г.
- ^ "Rack::ShowExceptions" . www.rubydoc.info . Проверено 14 сентября 2016 г.
- ^ "Стойка::Линт" . www.rubydoc.info . Проверено 14 сентября 2016 г.