如何在Goji(Golang)中创建具有不同中间件的单独路由组?
发布时间:2020-12-16 09:28:32 所属栏目:大数据 来源:网络整理
导读:我正在使用Goji( https://github.com/zenazn/goji)并且想要定义具有自己的中间件的路由组.例如,/ company下的所有路径都应使用LDAP身份验证并定义中间件来执行此操作. / external下的所有路径使用不同类型的身份验证,因此它们具有不同的中间件定义.但这是在
我正在使用Goji(
https://github.com/zenazn/goji)并且想要定义具有自己的中间件的路由组.例如,/ company下的所有路径都应使用LDAP身份验证并定义中间件来执行此操作. / external下的所有路径使用不同类型的身份验证,因此它们具有不同的中间件定义.但这是在同一端口上提供的单个应用程序,因此我不想完全创建单独的Web服务 – 只是路径(和某些特定路由)可能使用不同的中间件.
我在Goji上看到的所有示例都是针对所有路由使用一组中间件,所以我不确定如何以干净的方式完成此任务.另外,如果我可以为路由组中的所有路由指定基本路径,那将会很好,类似于我在其他路由框架中看到的路径. 我是否在Goji库(或扩展名为net / http)中缺少此功能,这允许我将路由组合在一起并让每个组使用自己的中间件堆栈? 我想要实现的是这样的(psedocode): // Use an LDAP authenticator for: // GET /company/employees // and // POST /company/records companyGroup = &RouteGroup{"basePath": "/company"} companyGroup.Use(LDAPAuthenticator) companyGroup.Add(goji.Get("/employees",Employees.ListAll)) companyGroup.Add(goji.Post("/records",Records.Create)) // Use a special external user authenticator for: GET /external/products externalGroup = &RouteGroup{"basePath": "/external"} externalGroup.Use(ExternalUserAuthenticator) externalGroup.Add(goji.Get("/products",Products.ListAll)) 解决方法
您应该可以使用以下内容解决问题:
// Use an LDAP authenticator companyGroup := web.New() companyGroup.Use(LDAPAuthenticator) companyGroup.Get("/company/employees",Employees.ListAll) companyGroup.Post("/company/records",Records.Create) goji.Handle("/company/*",companyGroup) // Use a special external user authenticator for: GET /external/products externalGroup := web.New() externalGroup.Use(ExternalUserAuthenticator) externalGroup.Get("/external/products",Products.ListAll) goji.Handle("/external/*",externalGroup) 您需要为每个组提供自己的Web.请记住,您需要指定组成员中的完整路径. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |