首页 > 后端开发 > Golang > 正文

如何取消注册 net/http 包中的处理程序?

Mary-Kate Olsen
发布: 2024-11-07 00:04:03
原创
925 人浏览过

How Can I Unregister Handlers in the net/http Package?

在 net/http 中注销处理程序

在 net/http 中,可以使用 http.Handle 将处理程序动态注册到特定的 URL 模式功能。但是,默认的多路复用器不提供取消注册处理程序的机制。

取消注册处理程序的一种方法是创建一个扩展标准 http.ServeMux 类型的自定义多路复用器。此自定义多路复用器可以包含用于取消注册处理程序的方法。例如,以下代码定义了一个添加 Deregister 方法的自定义多路复用器:

<code class="go">type MyMux struct {
    *http.ServeMux
    mu sync.Mutex // Guards the m map
    m  map[string]http.Handler
}

func (mux *MyMux) Deregister(pattern string) error {
    mux.mu.Lock()
    defer mux.mu.Unlock()
    if _, ok := mux.m[pattern]; !ok {
        return errors.New("handler not registered")
    }
    delete(mux.m, pattern)
    return nil
}</code>
登录后复制

定义自定义多路复用器后,它可以用于处理请求。例如:

<code class="go">mux := new(MyMux)
mux.Handle("/create", &factory)

srv := &http.Server{
    Addr:    "localhost:8080",
    Handler: mux,
}
srv.ListenAndServe()</code>
登录后复制

在自定义多路复用器上调用 Deregister 方法将停止相应的处理程序为请求提供服务。请注意,必须使用相同的自定义多路复用器实例来注册处理程序才能使取消注册生效。

以上是如何取消注册 net/http 包中的处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!