go-ozzo/ozzo-routing

关于部分函数的用法

skyleelove opened this issue · 7 comments

强哥,当我调用Use()后
router.Use(
// all these handlers are shared by every route
access.Logger(log.Printf),
slash.Remover(http.StatusMovedPermanently),
fault.Recovery(log.Printf),
)
之后的操作我没太明白,access.Logger(log.Printf),slash.Remover(http.StatusMovedPermanently),fault.Recovery(log.Printf),在以后的程序中是如何使用的呢?

它们都是自动被调用的。比如access.Logger()返回的是一个handler,这个handler因为是用Use()绑定的,每处理任何一个请求这个handler都会被调用,它的作用就是作请求日志(类似apache access log)。如果一个handler是用Get(), Post()之类绑定,那么它仅在请求匹配的时候才会被调用。

明白了,您的routing里边的context和router可以解耦么

能具体解释一下你的需求么?

我的理解是您的每个context中都包涵一个router,每个请求就是一个context,现在我想router和context是平行的关系,能够独立的互相调用

context之所以包含router的reference, 是因为有些middleware需要访问router。另外Context.URL()也用到了router。这个包含关系影响你的使用么?

不影响使用,想尽量的解耦,以后更新起来方便,您的这个routing写的非常棒,我现在正在研究,想理解的更透彻,以后也可以在您的基础上做自己的更新,太感谢您了。

谢谢,欢迎试用和讨论。