I need to accept multiple cat_id values in the request, for example:
localhost:8080/products/?cat_id=1,2
My func:
func GenerateMultiParams(c *gin.Context) models.Params {
limit := 0
page := 1
cat_id := 1
query := c.Request.URL.Query()
for key, value := range query {
queryValue := value[len(value)-1]
switch key {
case "limit":
limit, _ = strconv.Atoi(queryValue)
case "page":
page, _ = strconv.Atoi(queryValue)
case "cat_id":
cat_id, _ = strconv.Atoi(queryValue)
}
}
return models.Params{
Limit: limit,
Page: page,
Cat_id: []cat_id,
}
}
My struct:
type Params struct {
Limit int `json:"limit"`
Page int `json:"page"`
Cat_id []int `json:"cat_id"`
}
Request in my function:
result := config.DB.Model(&models.Products{}).Where(q).Where("cat_id=?", pagination.Cat_id).Limit(pagination.Limit).Offset(offset).Find(&prod)
I looked at many articles on the Internet, but not a single piece of advice helped me.
?cat_id=1&cat_id=2is the standard way to specify multiple values for a query parameter. Then you can dor.URL.Query()["cat_id"], this will return a[]stringwhich will contain two elements:"1"and"2".