Стойка (интерфейс веб-сервера) - Rack (web server interface)
Оригинальный автор (ы) | Лия Нойкирхен |
---|---|
Разработчики) | Джеймс Такер, Джош Пик, Хосе Валим, Майкл Феллингер, Аарон Паттерсон, Сантьяго Пасторино, Константин Хаасе |
Стабильный выпуск | 2.2.3 / 15 июня 2020 г.[1] |
Репозиторий | |
Операционная система | Кроссплатформенность |
Тип | Промежуточное ПО |
Лицензия | Лицензия MIT |
Интернет сайт | стойка |
Стойка это модульный интерфейс между веб-серверы и веб-приложения разработан в Язык программирования Ruby. Со стойкой, интерфейсы прикладного программирования (API) для веб-фреймворки и промежуточное ПО находятся завернутый в один вызов метода умение обращаться HTTP-запросы и ответы.
Rack используется во многих веб-фреймворках Ruby и библиотеки, Такие как Рубин на рельсах и Sinatra. Он доступен как Ruby Драгоценный камень. Многие приложения Ruby называются «совместимыми с стойкой».[2]
Rack вдохновил аналогичные фреймворки в JavaScript[3] (jack.js), Clojure,[4] Perl (Plack ), Common Lisp (Стук),[5] и .СЕТЬ (OWIN ).[6]
Обзор
Характеристики приложения Rack заключаются в том, что объект приложения реагирует на метод вызова. Метод call принимает объект среды в качестве аргумента и возвращает объект ответа стойки.
Среда[7]
Среда, принимаемая методом call в качестве аргумента, относится к объекту, который имеет:
а) Информация о 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 по умолчанию добавляет несколько промежуточных программных средств для таких функций, как отображение исключения со всеми деталями,[8] проверка запроса и ответов в соответствии со спецификацией стойки[9] и Т. Д.
Пример приложения
Совместимость со стойкой "Привет, мир "приложение в Рубин синтаксис:
# helloWorld.ru# Приложение, в котором определен метод вызова.учебный класс Привет, мир # Вызвать метод, который вернет код состояния HTTP, тип контента и контент. def вызов (env) [200, {"Тип содержимого" => "текст / html; charset = utf-8"}, ["Привет, мир"]] конецконец
Сервер для указанного выше кода может быть запущен с помощью "rackup helloWorld.ru" и доступен по адресу http: // локальный: 9292 / По умолчанию приложение Rack использует порт 9292.
Смотрите также
- Python WSGI
- Perl PSGI
- Javascript JSGI
- Вставить Python
- Smalltalk Seaside
- FastCGI
- Сервлет Java
- Серверный JavaScript
- Протокол Apache JServ
- ZeroC Ice
- Cisco Etch
- ISAPI Интерфейс прикладного программирования Интернет-сервера (Microsoft)
Рекомендации
- ^ «Релизы - стойка / стойка». Получено 20 июн 2020 - через GitHub.
- ^ Блин: как объединить и связать стоечные веб-приложения вместе. Rubyinside.com (4 декабря 2009 г.). Проверено 20 сентября 2013.
- ^ jack - введение В архиве 2014-12-17 в 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.
- ^ а б c «Документация на стеллаж». www.rubydoc.info. Получено 2016-09-14.
- ^ "Стойка :: ShowExceptions". www.rubydoc.info. Получено 2016-09-14.
- ^ "Стеллаж :: Пух". www.rubydoc.info. Получено 2016-09-14.