Open APILLSBURY opened 1 month ago
Gin just added a new interface called BindUnmarshaler that allows types to define a UnmarshalParam method which lets them be used as query parameters.
UnmarshalParam
Implementing this would allow binding KSUID API query params like this:
type queryParams struct { ID KSUID `form:"id"` } route.GET("/test", func(ctx *gin.Context) { var params queryParams{} _ = ctx.BindQuery(¶ms) entity, err := GetEntity(params.ID) ... })
I think all that is necessary is adding this method:
func (i *KSUID) UnmarshalParam(s string) error { return i.UnmarshalText([]byte(s)) }
I'm happy to open a PR for it if that would be helpful.
Alternatively, adding an UnmarshalJSON method would solve this
UnmarshalJSON
Gin just added a new interface called BindUnmarshaler that allows types to define a
UnmarshalParam
method which lets them be used as query parameters.Implementing this would allow binding KSUID API query params like this:
I think all that is necessary is adding this method:
I'm happy to open a PR for it if that would be helpful.