首页  >  文章  >  后端开发  >  如何在 Go 的 net/http 中注销 HTTP 处理程序?

如何在 Go 的 net/http 中注销 HTTP 处理程序?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-05 17:01:02829浏览

How to Deregister HTTP Handlers in Go's net/http?

处理 net/http 中的注销

net/http 中的 HTTP 处理程序可以动态注册和注销,以提供处理请求的灵活性。要取消注册处理程序,可以创建自定义 ServerMux。

实现自定义 ServerMux

从 Go 源代码 (GOROOT/src/pkg) 复制 ServerMux 的代码/net/http/server.go,第 837-939 行)。将 Deregister 方法添加到自定义 ServerMux,以从模式到处理程序映射中删除处理程序:

用法

创建自定义 ServerMux 的实例并像往常一样处理“/create”路由:

将自定义 ServerMux 设置为 Handler对于 HTTP 服务器:

取消注册

要取消注册处理程序,只需调用 ServerMux 上的 Deregister 方法即可:

这将修改服务器的路由行为,后续对“/123/*”的请求将不再由之前注册的处理

安全修改

通过从另一个 goroutine 调用 deregister() 来修改 ServerMux 是安全的,并且会更新服务器的路由逻辑。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn