基於OpenResty的Lua Web框架lor0.0.2預覽版發佈

Lor是一個運行在OpenResty上的基於Lua編寫的Web框架,當前最新版本是0.0.2預覽版,重構了以前發佈的0.0.1版本。主要API特性已經freeze,下個版本爲0.0.3,着重於修復當前路由的匹配bug。web

特性

  • 路由採用Sinatra風格,Sinatra是Ruby小而精的web框架.express

  • API基本採用了Express的思路和設計,Node.js跨界開發者能夠很快上手.segmentfault

  • 支持插件(middleware),路由可分組,路由匹配支持string/正則模式.服務器

  • lor之後會保持核心足夠精簡,擴展功能依賴middleware來實現. lor自己也是基於middleware來實現的.app

  • 推薦使用lor做爲HTTP API Server,lor此後也會支持模板渲染/Session/Cookie等常規web功能.框架

  • 提供了一個cli工具lord,能夠一鍵生成項目骨架/啓動、中止項目,快速體驗OpenResty和lua開發.工具

  • 框架文檔在這裏post

討論交流

目前有一個QQ羣用於在線討論:QQ羣522410959 522410959測試

快速開始

在使用lor以前請首先確保OpenResty和luajit已安裝.ui

一個簡單實例:

local lor = require("lor.index")
local app = lor()

-- 插件: 對以`/user`開始的請求作過濾處理
app:use("/user", function(req, res, next)
    req.params.inject = 'inject value'
    next()
end)

-- 按id查找用戶
app:get("/user/query/:id", function(req, res, next)
    local query_id = req.params.id -- 從req.params取參數
    -- 處理...
    next() -- 交給下一個調用者
end)

app:post("/user/:id/create", function(req, res, next)
    -- 建立一個用戶
end)

-- 404 error
app:use(function(req, res, next)
    if req:isFound() ~= true then
        res:status(404):send("sorry, not found.")
    end
end)

-- 錯誤處理插件,可根據須要定義多個
app:erroruse(function(err, req, res, next)
    -- err是錯誤對象
    res:status(500):send("服務器內發生未知錯誤")
end)

安裝

使用install.sh安裝lor框架

#如把lor安裝到/opt/lua/lor目錄下
sh install.sh /opt/lua/lor

執行以上命令後lor的命令行工具lord就被安裝在了/usr/local/bin下, 經過which lord查看:

$ which lord
/usr/local/bin/lord

lor的運行時包安裝在了/opt/lua/lor下, 經過ll /opt/lua/lor查看:

$ ll /opt/lua/lor
total 56
drwxr-xr-x  14 root  wheel   476B  1 22 01:18 .
drwxrwxrwt  14 root  wheel   476B  1 22 01:18 ..
-rw-r--r--   1 root  wheel     0B  1 19 23:48 CHANGELOG.md
-rw-r--r--   1 root  wheel   1.0K  1 19 23:48 LICENSE
-rw-r--r--   1 root  wheel     0B  1 19 23:48 Makefile
-rw-r--r--   1 root  wheel   1.9K  1 21 20:59 README-zh.md
-rw-r--r--   1 root  wheel   870B  1 21 20:59 README.md
drwxr-xr-x   4 root  wheel   136B  1 22 00:06 bin
-rw-r--r--   1 root  wheel   1.6K  1 19 23:48 install.md
-rw-r--r--   1 root  wheel   1.0K  1 21 22:37 install.sh
drwxr-xr-x   4 root  wheel   136B  1 21 22:40 lor
drwxr-xr-x  13 root  wheel   442B  1 22 01:17 test

至此, lor框架已經安裝完畢,接下來使用lord命令行工具快速開始一個項目.

使用

$ lord -h
lor v0.0.2, a Lua web framework based on OpenResty.

Usage: lor COMMAND [OPTIONS]

Commands:
 new [name]             Create a new application
 start                  Starts the server
 stop                   Stops the server
 restart                Restart the server
 version                Show version of lor
 help                   Show help tips

Options:
 --debug                Show some runtime details

執行lord new lor_demo,則會生成一個名爲lor_demo的示例項目,而後執行:

cd lor_demo
lord start

以後訪問http://localhost:8888/,便可。

更多使用方法,請參考test測試用例。

License

MIT

相關文章
相關標籤/搜索