49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// bindJson bind body as a map
|
|
func bindJson(c *gin.Context) map[string]interface{} {
|
|
var jsonMap map[string]interface{}
|
|
err := c.ShouldBindJSON(&jsonMap)
|
|
if err != nil {
|
|
var requestBody []byte
|
|
_, err := c.Request.Body.Read(requestBody)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
RequestErr(c, requestBody)
|
|
return nil
|
|
}
|
|
if jsonMap == nil || len(jsonMap) == 0 {
|
|
RequestErr(c, map[string]interface{}{"Body": nil})
|
|
return nil
|
|
}
|
|
return jsonMap
|
|
}
|
|
|
|
// bindJsonStruct bind json as a struct, and convert to map
|
|
func bindJsonStruct[T any](c *gin.Context) map[string]interface{} {
|
|
var bindObj T
|
|
err := c.ShouldBind(&bindObj)
|
|
if err != nil {
|
|
var requestBody []byte
|
|
_, err := c.Request.Body.Read(requestBody)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
RequestErr(c, requestBody)
|
|
return nil
|
|
}
|
|
jsonStr, _ := json.Marshal(bindObj)
|
|
var jsonMap map[string]interface{}
|
|
_ = json.Unmarshal(jsonStr, &jsonMap)
|
|
if jsonMap == nil || len(jsonMap) == 0 {
|
|
return nil
|
|
}
|
|
return jsonMap
|
|
}
|