ルーティングによって処理を変えたいが、handlerの中身はほとんど一緒なため、handlerの中でswitch文を使って切り分ける
L html.EscapeString(r.URL.Path) でパスの値を取得できる
func apiHandler(w http.ResponseWriter, r *http.Request){ var code string // 変数として宣言 switch html.EscapeString(r.URL.Path) { case "/btc": code = "BTC_JPY" // ビットコイン case "/eth": code = "ETH_JPY" // イーサリアム case "/xrp": code = "XRP_JPY" // リップル case "/xlm": code = "XML_JPY" // ステラルーメン case "/mona": code = "MONA_JPY" // モナコイン default: code = "BTC_JPY" } uri := "https://api.bitflyer.com/v1/getticker?product_code=" + code req, _ := http.NewRequest("GET", uri, nil) // 省略 } func main() { http.HandleFunc("/btc", apiHandler) http.HandleFunc("/eth", apiHandler) http.HandleFunc("/xrp", apiHandler) http.HandleFunc("/xlm", apiHandler) http.HandleFunc("/mona", apiHandler) log.Fatal(http.ListenAndServe(":8080",nil)) }
code := “BTC_JPY” とすると定数になるので、 var code string と変数として宣言する必要がある
なるほど、後はテンプレート側の処理
bulma cssとtypescriptを使いたい