Веб сервер на Lua. Часть 3: Класс «App» и Консоль
Веб сервер на Lua.
Часть 3: Класс «App»
Здравствуйте. Вы читаете запись из цикла "Веб сервер на Lua". В конце данного цикла у нас получится вполне работоспособный веб сайт, причем быстрый, да еще и на Lua. Я все действия буду производить в такой среде как "c9", сайт будет доступен под адресом: http://lua-includeralex.c9.io/ Все файлы, вы можете посмотреть тут: http://ide.c9.io/includeralex/lua Что, ж поехали.
В этой части мы создадим более углубленно рассмотрим функционал Lapus, а именно: изучим класс App, а также узнаем о консоли Lapis.
Консоль
Начнем, пожалуй, с консоли Lapis. Эта консоль - некий дебагер, в него мы вставляем код - а он нам возвраащет результат. Интерпретатор Lua, так сказать, только с доступом ко всем библиотекам lapis.
Первым делом такую консоль необходимо установить. Для начала скачаем необходимый пакет, используя уже знакомую нам утилиту LuaRocks:
$ luarocks install --server=http://rocks.moonscript.org lapis-console
После установки данной библиотеки мы готовы приступать к самому главному - добавлению роутера, который бы отвечал за эту консоль. В начало нашего кода, там где у нас подключаются все библиотеки, мы добавим такой код:
local console = require("lapis.console")
Структура данного require такова: имя_фрэймворка.имя_аддона. В нашем случае это lapis.console.
Теперь необходимо добавить роутер, для этого используем уже знакомую структуру:
app:get("/console", console.make())
console.make - это та самая функция, которая конструирует консоль пот заданным роутером.
Теперь запустим сервер, и убедимся что все работает:
На этом разговор об консоли закончен. Приступим к самому вкусненькому - к класссу app.
Класс App
Класс app - это самый главный класс в нашем приложении. Без него наше приложение не сможет выполнять хоть какие-то полезные действия, кроме выжирания памяти, и ресурсов процессора.
Для создания объекта этого класса нам необходимо выполнить следующий код:
local app = lapis.Application()
Перейдем к методам App.
app:enable(module: string) - функция включения модуля lapis. Из модулей известны нам пока только etlua, но потом мы обязательно узнаем больше.
app:match([router_name: string],url: string, onrequest: function) - функция создания нового роутера, с парсингом url, в параметр url передается паттерн, в параметр router_name передается имя роутера, об нем чуть позже, в параметр onrequest передается функция, которая и будет выполняться при каждом заходе на url (принимает аргумент self).
app:before_filter(before: function) - устанавливает функцию-обработчик, которая вызывается при каждом запросе к сайту, функция принимает один аргумет self)
app:get(url: string, onrequest: function - то же что и app:match, только умеет работать только с GET запросами, не поддерживает router-name, и не умеет парсить url.
app:post(url: string, onrequest: function - то же что и app:match, только умеет работать только с POST запросами, не поддерживает router-name, и не умеет парсить url.
Что-ж, на этом все.
Enjoy!
2 комментария
Рекомендуемые комментарии