- Building Microservices with Go
- Nic Jackson
- 242字
- 2021-07-15 17:28:02
Routing in net/http
Even a simple microservice will need the capability to route requests to different handlers dependent on the requested path or method. In Go this is handled by the DefaultServeMux method which is an instance of ServerMux. Earlier in this chapter, we briefly covered that when nil is passed to the handler parameter for the ListenAndServe function then the DefaultServeMux method is used. When we call the http.HandleFunc("/helloworld", helloWorldHandler) package function we are actually just indirectly calling http.DefaultServerMux.HandleFunc(…).
The Go HTTP server does not have a specific router instead any object which implements the http.Handler interface is passed as a top level function to the Listen() function, when a request comes into the server the ServeHTTP method of this handler is called and it is responsible for performing or delegating any work. To facilitate the handling of multiple routes the HTTP package has a special object called ServerMux, which implements the http.Handler interface.
There are two functions to adding handlers to a ServerMux handler:
func HandlerFunc(pattern string, handler func(ResponseWriter, *Request))
func Handle(pattern string, handler Handler)
The HandleFunc function is a convenience function that creates a handler who's ServeHTTP method calls an ordinary function with the func(ResponseWriter, *Request) signature that you pass as a parameter.
The Handle function requires that you pass two parameters, the pattern that you would like to register the handler and an object that implements the Handler interface:
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
- ASP.NET Web API:Build RESTful web applications and services on the .NET framework
- INSTANT OpenCV Starter
- 華為HMS生態與應用開發實戰
- Mastering Unity Shaders and Effects
- 微信公眾平臺開發:從零基礎到ThinkPHP5高性能框架實踐
- Elasticsearch for Hadoop
- Scala程序員面試算法寶典
- R數據科學實戰:工具詳解與案例分析
- Go語言開發實戰(慕課版)
- Python 3 數據分析與機器學習實戰
- Programming Microsoft Dynamics? NAV 2015
- MySQL 8從零開始學(視頻教學版)
- 計算語言學導論
- Getting Started with Windows Server Security
- 少年小魚的魔法之旅:神奇的Python