qinglong-go/api/server/server.go

44 lines
970 B
Go
Raw Permalink Normal View History

2023-09-04 06:02:25 +00:00
package server
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/huoxue1/qinglong-go/service/server"
)
func Api(group *gin.RouterGroup) {
group.Match([]string{
http.MethodGet,
http.MethodPost,
http.MethodDelete,
http.MethodPut,
http.MethodOptions,
2023-09-05 11:35:54 +00:00
}, "/:path", handle(false))
group.Match([]string{
http.MethodGet,
http.MethodPost,
http.MethodDelete,
http.MethodPut,
http.MethodOptions,
}, "/log/:path", handle(true))
2023-09-04 06:02:25 +00:00
}
2023-09-05 11:35:54 +00:00
func handle(logEnable bool) gin.HandlerFunc {
2023-09-04 06:02:25 +00:00
return func(ctx *gin.Context) {
path := ctx.Param("path")
query := make(map[string]string)
2023-09-05 11:35:54 +00:00
_ = ctx.ShouldBindQuery(&query)
2023-09-04 06:02:25 +00:00
headers := make(map[string]string)
2023-09-05 11:35:54 +00:00
_ = ctx.ShouldBindHeader(&headers)
2023-09-04 06:02:25 +00:00
body := make(map[string]any)
2023-09-05 11:35:54 +00:00
_ = ctx.ShouldBind(&body)
data := server.Run(ctx, path, query, body, headers, logEnable)
2023-09-04 06:02:25 +00:00
ctx.Writer.WriteHeader(200)
ctx.Writer.Header().Add("Content-Type", "application/json")
_, _ = ctx.Writer.WriteString(data)
}
}