我有一个仅在特定条件下才能执行的函数(例如 role ==’Administrator’ )。现在,我使用 “ if”
语句。但是在某些情况下,情况可能会很多,而长定义的 “如果” 看起来并不那么美观。
Go(或与Go框架相关)中是否可用的机制允许实现中间件 概念 (动作过滤器)?
例如,ASP.NET MVC允许执行以下操作:
[MyFilter]
public ViewResult Index()
{
// Filter will be applied to this specific action method
}
因此,在单独的类中实现的MyFilter()可以实现更好的代码组成和测试。
更新:
Revel(用于Go的Web框架)提供了与Interceptors类似的功能(由动作调用之前或之后由框架调用的功能):https
:
//revel.github.io/manual/interceptors.html
这种事情通常是用Go中的 中间件 完成的。最简单的例子是:
package main
import (
"fmt"
"html"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", handler)
http.HandleFunc("/foo", middleware(handler))
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
}
func middleware(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
r.URL.Path = "/MODIFIED"
// Run the next handler
next.ServeHTTP(w, r)
}
}
如您所见,中间件是具有以下功能的函数:
http.HandlerFunc
参数http.HandlerFunc
;http.handlerFunc
传入的。通过这种基本技术,您可以根据需要“链接”许多中间件:
http.HandleFunc("/foo", another(middleware(handler)))
这种模式有一些变体,大多数Go框架使用的语法略有不同,但是概念通常是相同的。
我已经创建了一个新的中间件名称Adminpanel 和注册中间件 和路线 }); 但当我运行时,它要求我尝试获取非对象的属性,这意味着我不能在这里访问Auth类,有人能告诉我错误是什么以及如何在中间件中访问Auth Facade吗。 这是我的身份验证码 谢谢
问题内容: 我在Linux机器上安装的Oracle服务器上有一个数据库架构。我需要在转储文件中导出与架构相关的信息。 这个怎么做 ? 问题答案: 它取决于Oracle的哪个版本?较旧的版本需要exp(导出),较新的版本需要expdp(数据泵);exp已被弃用,但在大多数情况下仍然有效。 在开始之前,请注意Data Pump会导出到服务器端Oracle“目录”,这是在数据库中映射到物理位置的Orac
如何使用用户指定的架构将dataframe转换为Avro格式?
问题内容: Mongoose文档中建议我应该能够使用插入“ init”钩子的中间件来控制流。 但是,到目前为止,只有“保存”和“验证”才能获得成功。 当我做这样的事情时,这些中间件都不会被调用: 我想念什么吗? 问题答案: 事实证明,在创建新模型时不会触发“ init”事件/挂钩,而仅在从数据库中加载现有模型时才会触发。看来我应该改用pre / validate挂钩。
1.在自己网站需要调用的页面中用script引用cordova.js <script type="text/javascript" src="/cordova.js"></script> 注意:引用js,路径必须写/cordova.js。 2.在js中正确使用cordova插件 以下代码以扫描二维码插件为例: <script type="text/javascript"> var dev
我正在尝试将收藏转储到。json文件,但在看过pymongo教程后,我找不到任何与之相关的东西。 教程链接:https://api.mongodb.com/python/current/tutorial.html