本文整理匯總了Golang中github.com/gin-gonic/gin.Engine.Run方法的典型用法代碼示例。如果您正苦於以下問題:Golang Engine.Run方法的具體用法?Golang Engine.Run怎麽用?Golang Engine.Run使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/gin-gonic/gin.Engine
的用法示例。
在下文中一共展示了Engine.Run方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: RunWithRPC
func (m *Armor) RunWithRPC(g *gin.Engine, rpcInit func(*grpc.Server)) {
runOn := fmt.Sprintf("%s:%s", m.Config.GetString("interface"), m.Config.GetString("port"))
banner := `
A R M O R
.---.___.---.
| | | Running .....: PRODUCT_NAME
|_____|_____| Host/Iface ..: HOST/INTERFACE
|___|___|
|___|___|
`
// XXX replace with tmpl
banner = strings.Replace(
strings.Replace(
strings.Replace(banner, "HOST", m.Config.Hostname, -1), "PRODUCT_NAME", m.Config.Product, -1),
"INTERFACE", runOn, -1)
log.Print(banner)
log.Printf("-> Environment: %v", m.Config.Environment)
log.Printf("-> Product: %v", m.Config.Product)
log.Printf("-> Host/Interface: %v/%v", m.Config.Hostname, runOn)
log.Printf("-> Config: %v", m.Config.All())
if rpcInit != nil {
rpc := newRPC(m.Config)
rpc.Run(rpcInit)
}
g.Run(runOn)
}
示例2: main
func main() {
flag.Parse()
if *logToFile {
logWriteTo, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Printf("error opening to log file: %v", err)
}
if logWriteTo != nil {
log.SetOutput(logWriteTo)
}
}
gin.SetMode(*ginMode)
var route *gin.Engine
if *useGinLogger {
route = gin.Default()
} else {
route = gin.New()
route.Use(logger)
}
route.GET("/", func(ctx *gin.Context) {
ctx.JSON(200, gin.H{"message": "Its an entry point :)"})
})
route.GET("/token", func(ctx *gin.Context) {
tokenString := auth.GetToken(secretpassword)
ctx.JSON(200, gin.H{"token": tokenString})
})
route.GET("/dbaccessor", func(ctx *gin.Context) {
ctx.JSON(200, getFakeDbData())
})
route.Use(auth.Auth(secretpassword))
route.POST("/auth", func(ctx *gin.Context) {
ak := ctx.Request.FormValue("authkey")
if ak == "" {
ctx.JSON(401, "No auth key")
} else if !auth.VerifyAuthKey(ak) {
ctx.JSON(401, "Wrong key")
} else {
ctx.Redirect(http.StatusFound, "/user")
}
})
route.GET("/user", func(ctx *gin.Context) {
key := ctx.MustGet("authKey")
udetails := dbAccessor(key.(string))
ctx.JSON(200, gin.H{"user": udetails})
})
route.GET("/user/:id", func(ctx *gin.Context) {
id := ctx.Params.ByName("id")
ctx.JSON(200, find(id))
})
if err := route.Run(fmt.Sprintf(":%d", *port)); err != nil {
logFatal("Http not running: ", err)
} else {
logPrintln("shutting down")
}
}
示例3: main
func main() {
var engine *gin.Engine = gin.New()
engine.Use(gin.Logger())
engine.Use(gin.Recovery())
engine.GET("/:name", func(c *gin.Context) {
c.String(http.StatusOK, "Hello %s\n", c.Param("name"))
})
engine.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "Index\n")
})
engine.Run(":8080")
}
示例4: main
func main() {
var err error
var cp string
var initial bool
var r *gin.Engine
tbox, _ := rice.FindBox("templates")
abox, _ := rice.FindBox("assets")
flag.StringVarP(&cp, "conf", "c", "conf.yml", "Local path to configuration file.")
flag.BoolVarP(&initial, "initial", "i", false, "Run the initial setup of the server.")
flag.Parse()
if err = conf.Load(cp, !initial); err != nil || initial {
setup.Run()
}
if err = database.Initialize(); err != nil {
log.Fatal(err)
}
defer database.DB.Close()
if err = models.Initialize(); err != nil {
log.Fatal(err)
}
go monitoring.Monit()
if r, err = router.Setup(tbox, abox); err != nil {
log.Fatal(err)
}
logger.Info("server", "Started goploader server on port", conf.C.Port)
if conf.C.ServeHTTPS {
if err = http.ListenAndServeTLS(fmt.Sprintf(":%d", conf.C.Port), conf.C.SSLCert, conf.C.SSLPrivKey, r); err != nil {
logger.Err("server", "Fatal error", err)
}
} else {
if err = r.Run(fmt.Sprintf(":%d", conf.C.Port)); err != nil {
logger.Err("server", "Fatal error", err)
}
}
}
示例5: main
// Application entry point
func main() {
fmt.Printf("\n%s (%s) %s\n\n", APP_TITLE, APP_NAME, APP_VERSION)
// Setup the logging infrastructure
initialiseLogging()
// Setup some default values
opt = new(Options)
opt.ConfigFile = "./" + APP_NAME + ".config"
opt.CsvField = -1
opt.CsvDelimiter = ","
opt.RemoveQuotes = false
opt.Format = FORMAT_ALL // Default to all output
goptions.ParseAndFail(opt)
// Increment the CSV field to make it easier for the user, since our arrays are 0 based
if opt.CsvField > -1 {
opt.CsvField -= 1
}
// Validate the mode value
switch opt.Mode {
case MODE_SERVER:
// Load the applications configuration such as ports and IP
config = loadConfig(opt.ConfigFile, true)
case MODE_FILE:
if len(opt.InputFile) == 0 {
logger.Fatal("Input file path must be supplied when in file mode")
}
if len(opt.OutputFile) == 0 {
logger.Fatal("Output file path must be supplied when in file mode")
}
// Load the applications configuration such as ports and IP
config = loadConfig(opt.ConfigFile, false)
default:
logger.Fatal("Invalid mode value (m): %v", opt.Mode)
}
// Validate the format value
switch opt.Format {
case FORMAT_UNIDENTIFIED:
case FORMAT_IDENTIFIED:
case FORMAT_ALL:
default:
logger.Fatal("Invalid format value (f): %v", opt.Format)
}
// Lets make sure that the users input file actually exists
if _, err := os.Stat(opt.DataFile); os.IsNotExist(err) {
logger.Fatal("Data file does not exist")
}
processDataFile(opt.DataFile)
// Start the web API interface if the user wants it running
if opt.Mode == "s" {
logger.Info("HTTP API server running: " + config.ApiIp + ":" + fmt.Sprintf("%d", config.ApiPort))
go func() {
var r *gin.Engine
if config.ShowRequests == true {
r = gin.Default()
} else {
gin.SetMode(gin.ReleaseMode)
r = gin.New()
r.Use(gin.Recovery())
}
r.GET("/single/:hash/", lookupSingleHash)
r.POST("/bulk", lookupMultipleHashes)
r.Run(config.ApiIp + ":" + fmt.Sprintf("%d", config.ApiPort))
}()
var wg sync.WaitGroup
wg.Add(1)
wg.Wait()
} else {
processInputFile()
}
}
示例6: startServer
func startServer(r *gin.Engine, wg *sync.WaitGroup) {
defer wg.Done()
listen := httpListenString()
r.Run(listen)
}