如何使用变量作为http.HandleFunc()的模式

问题描述 投票:0回答:1

我有一些HTTP请求,它们共享许多常用功能:

package main

import (
    "net/http"
    "mypackage"
)

func main() {
    http.HandleFunc("/myurl1", func(w http.ResponseWriter, r *http.Request) {
        mypackage.Common()
        mypackage.Different1()
    })
    http.HandleFunc("/myurl2", func(w http.ResponseWriter, r *http.Request) {
        mypackage.Common()
        mypackage.Different2()
    })
    http.ListenAndServe(":8080", nil)
}

我可以在/myurl处使用变量,并使用切换用例来减少代码重复,如下所示:

package main

import (
    "net/http"
    "mypackage"
)

func main() {
    http.HandleFunc(variable string, func(w http.ResponseWriter, r *http.Request) {

         mypackage.Common()

         switch variable {
         case "myurl1":
             mypackage.Different1()
         case "myurl2":
             mypackage.Different2()
         }
    })
    http.ListenAndServe(":8080", nil)
}
http go
1个回答
1
投票

您可以先路由到/,然后根据路径调用Different1或Different2。请参考this代码。

© www.soinside.com 2019 - 2024. All rights reserved.