Перейти к содержанию
  • записей
    12
  • комментариев
    60
  • просмотров
    30 608

Веб сервер на Lua. Часть 3: Класс «App» и Консоль

LeshaInc

1 889 просмотров

Веб сервер на 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 - это та самая функция, которая конструирует консоль пот заданным роутером.

 


Теперь запустим сервер, и убедимся что все работает:
lapis_console.png
На этом разговор об консоли закончен. Приступим к самому вкусненькому - к класссу 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 Комментария


Рекомендуемые комментарии

Пожалуйста, сделай гайд о том, как авторизацию настроить

Разобрался, там подлянка с nginx.conf.erb была

Поделиться этим комментарием


Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Добавить комментарий...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...