2024-01-13 18:54:23 +08:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"github.com/loveuer/nf"
|
|
|
|
"log"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2024-01-13 19:59:24 +08:00
|
|
|
var (
|
|
|
|
app = nf.New()
|
|
|
|
quit = make(chan bool)
|
|
|
|
)
|
|
|
|
|
2024-01-13 18:54:23 +08:00
|
|
|
func main() {
|
|
|
|
|
|
|
|
app.Get("/name", handleGet)
|
|
|
|
|
|
|
|
go func() {
|
2024-01-13 19:59:24 +08:00
|
|
|
err := app.Run(":80")
|
2024-01-13 18:54:23 +08:00
|
|
|
log.Print("run with err=", err)
|
|
|
|
quit <- true
|
|
|
|
}()
|
|
|
|
|
|
|
|
<-quit
|
|
|
|
}
|
|
|
|
|
|
|
|
func handleGet(c *nf.Ctx) error {
|
|
|
|
type Req struct {
|
|
|
|
Name string `query:"name"`
|
|
|
|
Addr []string `query:"addr"`
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
err error
|
|
|
|
req = Req{}
|
|
|
|
)
|
|
|
|
|
|
|
|
if err = c.QueryParser(&req); err != nil {
|
|
|
|
return nf.NewNFError(400, err.Error())
|
|
|
|
}
|
|
|
|
|
2024-01-13 19:59:24 +08:00
|
|
|
if req.Name == "quit" {
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
time.Sleep(2 * time.Second)
|
|
|
|
log.Print("app quit = ", app.Shutdown(context.TODO()))
|
|
|
|
}()
|
|
|
|
}
|
|
|
|
|
2024-01-13 18:54:23 +08:00
|
|
|
return c.JSON(nf.Map{"req_map": req})
|
|
|
|
}
|