일단 html을 바인딩하는데 반복적인 func 이 들어가서 이걸 해소 하려고 했다.
[이전코드]
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gofrs/uuid"
)
func get_index(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
c.HTML(http.StatusOK, "index.html", gin.H{})
}
func get_simple(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
c.HTML(http.StatusOK, "simple.html", gin.H{})
}
func get_chejan_balance(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
uuid1, err := uuid.NewV4()
if err != nil {
panic(err)
}
fmt.Println(uuid1)
c.HTML(http.StatusOK, "chejan_balance.html", gin.H{"uuid": uuid1})
}
func get_opt10085(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
uuid1, err := uuid.NewV4()
if err != nil {
panic(err)
}
fmt.Println(uuid1)
c.HTML(http.StatusOK, "opt10085.html", gin.H{"uuid": uuid1})
}
func get_chejan_order(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
uuid1, err := uuid.NewV4()
if err != nil {
panic(err)
}
fmt.Println(uuid1)
c.HTML(http.StatusOK, "chejan_order.html", gin.H{"uuid": uuid1})
}
func get_realtime_contract(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
uuid1, err := uuid.NewV4()
if err != nil {
panic(err)
}
fmt.Println(uuid1)
c.HTML(http.StatusOK, "realtime_contract.html", gin.H{"uuid": uuid1})
}
func get_send_order(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
uuid1, err := uuid.NewV4()
if err != nil {
panic(err)
}
fmt.Println(uuid1)
c.HTML(http.StatusOK, "send_order.html", gin.H{"uuid": uuid1})
}
func get_opt10001(c *gin.Context) {
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
uuid1, err := uuid.NewV4()
if err != nil {
panic(err)
}
fmt.Println(uuid1)
c.HTML(http.StatusOK, "KIW_OPT10001(주식기본정보요청).html", gin.H{"uuid": uuid1})
}
반복이 많다. 이걸 map과 for문을 이용해서 줄였다.
var map_url map[string]string
func go_html(c *gin.Context) {
c.Header("Content-Type", "text/html")
fmt.Println(fmt.Sprintf("%v", c.Request.URL))
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
tmp := map_url[fmt.Sprintf("%v", c.Request.URL)]
fmt.Println(tmp + ".html")
c.Header("Content-Type", "text/html")
//views폴더가 자동으로 지정되는 듯하다. view로 폴더이름 했을땐 에러났다.
uuid1, err := uuid.NewV4()
if err != nil {
panic(err)
}
fmt.Println(uuid1)
c.HTML(http.StatusOK, tmp+".html", gin.H{"uuid": uuid1})
}
func main() {
map_url = make(map[string]string)
map_url["/index"] = "index"
map_url["/chejan_balance"] = "chejan_balance"
map_url["/opt10085"] = "opt10085"
map_url["/opt10001"] = "KIW_OPT10001(주식기본정보요청)"
map_url["/chejan_order"] = "chejan_order"
r := gin.Default()
gin.ForceConsoleColor()
//r.Static("/", "./views")
r.Static("/src", "./views/src")
r.HTMLRender = ginview.Default()
r.GET("/ping2", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
/*html*/
/*
r.GET("/index", get_index)
r.GET("/simple", get_simple)
r.GET("/chejan_balance", get_chejan_balance)
r.GET("/opt10085", get_opt10085)
r.GET("/opt10001", get_opt10001)
r.GET("/chejan_order", get_chejan_order)
r.GET("/realtime_contract", get_realtime_contract)
r.GET("/send_order", get_send_order)
r.POST("/stock_detail", get_stock_detail)
r.GET("/domain_mngr", get_domain_mngr)
r.GET("/pgm_mngr", get_pgm_mngr)
r.GET("/optkwfid", get_optkwfid)\
*/
for key, _ := range map_url {
//fmt.Println(key, val)
r.GET(key, go_html)
}
map에 데이터를 넣어넣고
route를 for문을 돌려서 map에 있는걸로 넣어준다.
연결함수 go_html을 호출해주고 해당함수에서는 라우터 url을 기준으로 다시 map에서 값을 가져와 세팅해준다.
고고고!!