获取Golang中从URL查询的位图类型过滤器



我正在用Gin框架构建一个大型Go web应用程序。对于请求用户信息的api之一,有一个输入类型为bitmap的过滤器参数,表示用户是在线还是离线:

// SearchUsers API parameter: filterUser
// filterUser is a bitmap
Online: 1 << 0
Offline: 1 << 1

// Values:
0 -> not used
1 -> online
2 -> offline
3 -> all (online, offline)

现在我正在使用Request.URL.Query解析所有API参数。我想知道这是否同样适用于位图类型?我是否需要创建一个[]byte来处理输入,然后将其转换为DB查询的整数?

func (h *HandleManager) SearchUsers() gin.HandlerFunc {
return func(c *gin.Context) {
// ...
q := c.Request.URL.Query()
filterUsers := q.Get("filterUser")
if filterUsers != "" {
filterUsersByte := []byte(filterUsers)
} 

q.Get()返回string值(可能,取决于客户端)您的位图的十进制表示形式。将其转换为[]byte将为您提供字符串的UTF-8编码字节。这不是你想要的。

使用strconv.Atoi()从字符串中解析数字,例如:

filterUsers := q.Get("filterUser")
bitmap, err := strconv.Atoi(filterUsers)
if err != nil {
// Handle error
}
// Use bitmap

最新更新