我有一个简单的Web服务器的代码,但我不明白这段代码:
方法:app.routes(),
const webPort = "80"
type Config struct {}
func main() {
app := Config{}
log.Printf("Starting broker service on port %s\n",webPort)
srv := &http.Server{
Addr: fmt.Sprintf(":%s",webPort),
Handler:app.routes(),
}
err := srv.ListenAndServe()
if(err != nil) {
log.Panic(err)
}
}
字符串
在routes文件中:
func (app *Config) routes() http.Handler {
mux := chi.NewRouter()
mux.Use(cors.Handler(cors.Options{
AllowedOrigins: []string{"http://*","https://*"},
AllowedMethods: []string{"GET", "POST", "DELETE","PUT","OPTIONS"},
AllowedHeaders: []string{"Accept","Authorization","Content-Type","X-CSRF-Token"},
ExposedHeaders: []string{"Link"},
AllowCredentials:true,
MaxAge:300,
}))
mux.Use(middleware.Heartbeat("/ping"))
mux.Post("/",app.Broker)
return mux
}
型
这是工作的,当收到请求时调用了routes()函数,但是当它附加到一个空结构体时,这个routes()是如何知道被触发的呢?
app := Config{}
型
应用程序从哪里知道routes()?
函数中的func (app *Config)
是什么?
1条答案
按热度按时间ckocjqey1#
路由已连接到HTTP服务器,如下所示。
字符串
routes
是Config
结构的一个方法。即使Config
为空,我们仍然可以像代码中那样调用routes
方法。型
Config
结构体在这里充当方法接收器。