我正在使用 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))