lor icon indicating copy to clipboard operation
lor copied to clipboard

关于/user和/user/两种类型的URI

Open sumory opened this issue 8 years ago • 2 comments

假设我们有一个group router user_router,它挂载在"user"下面,即

app:use("user", user_router())

lor v0.3.0版本并不支持在这个group router里实现"/user"这个路由,即不支持以下写法:

user_router:get("", function(req, rex, next) 
     -- … 
end)

但支持将路由挂载到"/user/",即支持:

user_router:get("/", function(req, rex, next) 
     -- … 
end)

从语义上来讲,/user/user/并不等价,只是有些应用服务器或是语言对此作了默认处理。

在lor v0.3.0的实现中,认为/user属于全局对象的,即应该通过app:get("/user", ...)来挂载到app上,而/user/属于上面所说的user_router,即应该通过user_router:get("/", ...)挂载到user_router上。

此外lor提供了两种路由模式来配置是否将"/user"和"/user/"作为等价路由,详细请参看这篇文章


在下个版本v0.3.1中会实现类似如下写法来满足习惯用法,即将/user挂载到user_router下面:

user_router:get(function(req, res, next)
    res:send("this is /user")
end)

sumory avatar Feb 15 '17 02:02 sumory

done with commit #d47632

user_router:get(function(req, res, next)
    res:send("this is /user")
end)

-- also support multi middlewares
user_router:get(function(req, res, next) 
    req.params.test_var = 1
end, function(req, res, next) 
    req.params.test_var = 2
end, function(req, res, next)
    res:send("now the test_var is " .. req.params.test_var) -- 2
end)

sumory avatar Apr 16 '17 11:04 sumory

nice

Y130 avatar Nov 22 '17 06:11 Y130