Перейти к содержимому

IncluderWorld

  • записей
    11
  • комментариев
    60
  • просмотра
    31 402

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

LeshaInc

2 024 просмотра

Веб сервер на 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 комментария


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

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

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

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

×   Вы вставили отформатированное содержимое.   Удалить форматирование

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

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

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

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

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