基于OpenResty的Lua Web框架lor0.0.2預覽版發布
Lor是一個運行在OpenResty上的基于Lua編寫的Web框架,當前最新版本是0.0.2預覽版,重構了之前發布的0.0.1版本。主要API特性已經freeze,下個版本為0.0.3,著重于修復當前路由的匹配bug。
特性
路由采用Sinatra風格,Sinatra是Ruby小而精的web框架.
API基本采用了Express的思路和設計,Node.js跨界開發者可以很快上手.
支持插件(middleware),路由可分組,路由匹配支持string/正則模式.
lor以后會保持核心足夠精簡,擴展功能依賴
middleware
來實現.lor
本身也是基于middleware
來實現的.推薦使用lor作為HTTP API Server,lor此后也會支持模板渲染/Session/Cookie等常規web功能.
提供了一個cli工具
lord
,可以一鍵生成項目骨架/啟動、停止項目,快速體驗OpenResty和lua開發.框架文檔在這里
討論交流
快速開始
在使用lor之前請首先確保OpenResty和luajit已安裝.
一個簡單實例:
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
來自: http://segmentfault.com/a/1190000004349554