You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.1 KiB

11 months ago
package main
import (
"fmt"
"git.diulo.com/mogfee/kit/rest"
"net/http"
"os"
"os/signal"
)
func main() {
srv := rest.NewServer(rest.RestConf{
Host: "localhost",
Port: 8998,
}, rest.WithCors("*"))
srv.Use(func(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
fmt.Println("middleware")
next(w, r)
}
})
srv.AddRoute(rest.Route{
Method: http.MethodGet,
Path: "/api/v2/user/:name",
Handler: func(w http.ResponseWriter, r *http.Request) {
//var param struct {
// Name string `json:"name"`
// Age int `json:"age"`
//}
//if err := httpx.Parse(r, &param); err != nil {
// fmt.Println(err)
// return
//}
//fmt.Println(param)
w.WriteHeader(200)
w.Write([]byte("OK"))
},
})
errChan := make(chan error, 1)
go func() {
// 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间)
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, os.Interrupt)
errChan <- fmt.Errorf("%v", <-signalChan)
}()
go func() {
errChan <- srv.Start()
}()
fmt.Println("started")
fmt.Println(<-errChan)
fmt.Println("stoping....")
}