1. 路由以及url 模式
参考如下:
local lapis = require("lapis")
local app = lapis.Application()
app:match("/", function(self) end) // 必须的
app:match("/hello", function(self) end)
app:match("/users/all", function(self) end)
2. 带参数的路由格式
// 包含请求参数的 使用:
app:match("/page/:page", function(self)
print(self.params.page) // 打印输出参数, 比如 /page/dalong 输出 {page:"dalong"}
end)
// 可选路由参数(使用括号)
/projects/:username(/:project)
// * 符号,匹配尽可能多的参数,说白了,就是url 参数中其余的
app:match("/browse/*", function(self)
print(self.params.splat)
end)
app:match("/user/:name/file/*", function(self)
print(self.params.name, self.params.splat)
end)
3. 路由优先级
a. 完全匹配 /hello/world
b. 变量路由 /hello/:variable
c. 统配路由 /hello/*
4. 别名路由(结合self:url_for 类似路由的别名)
// 参考如下:
local lapis = require("lapis")
local app = lapis.Application()
app:match("index", "/", function(self)
return self:url_for("user_profile", { name = "leaf" })
end)
app:match("user_profile", "/user/:name", function(self)
return "Hello " .. self.params.name .. ", go home: " .. self:url_for("index")
end)