go - 我应该如何根据 URL 切换

标签 go go-gin

这是我在 Postman 中的 URL:http://localhost:8000/filter?Name=Srinu我正在传递一个查询字符串以根据查询获取数据库上的记录。
在我的具有姓名、性别和年龄的数据库中,我应该如何根据下面的代码片段编写 switch 语句,我必须根据我的查询获取数据?

switch ? {
    case "Name":
        fiName := bson.D{{"Name", name}}
        err = uc.session.DB(DB_NAME).C(DB_COLLECTION).Find(fiName).All(&json1)

        if err == nil {
            c.Writer.Header().Set("Content-Type", "application/json")
            c.JSON(201, &json1)
        } else {
            c.JSON(500, gin.H{"result": "An error occured"})
        }
    case "Gender":
        fiGender := bson.D{{"Gender", gender}}
        err = uc.session.DB(DB_NAME).C(DB_COLLECTION).Find(fiGender).All(&json1)

        if err == nil {
            c.Writer.Header().Set("Content-Type", "application/json")
            c.JSON(201, &json1)
        } else {
            c.JSON(500, gin.H{"result": "An error occured"})
        }
    case "Age":
        fiAge := bson.D{{"Age", age}}
        err = uc.session.DB(DB_NAME).C(DB_COLLECTION).Find(fiAge).All(&json1)

        if err == nil {
            c.Writer.Header().Set("Content-Type", "application/json")
            c.JSON(201, &json1)
        } else {
            c.JSON(500, gin.H{"result": "An error occured"})
        }
    }

最佳答案

使用以下代码:

r := ctx.Request

r.ParseForm()
switch {
case len(r.Form["Name"]) > 0:
    name := r.Form["Name"][0]
    fiName := bson.D{{"Name", name}}
    err = uc.session.DB(DB_NAME).C(DB_COLLECTION).Find(fiName).All(&json1)
    ...
}

来电r.ParseForm()r.Form使用从请求中解析的数据。

字段r.Form是字符串 slice 的映射。如果查询中存在参数,则该参数的字符串 slice 的长度大于零。

声明name := r.Form["Name"][0]获取 Name 的第一个参数值.如果请求是 http://localhost:8000/filter?Name=Srinu&Name=Reflect ,然后是第二个值 Reflect被默默地忽略。

关于go - 我应该如何根据 URL 切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60705375/

相关文章:

go - Gin 上传文件时始终返回204

mysql - 从Golang Gorm查询中获取选定的值

validation - 如何从 Gin 绑定(bind)/验证中获取错误字段?

pointers - 为什么 Win32 API 系统调用中使用的缓冲区会转换为 [1<<20]<type> 数组?

amazon-web-services - beego running on AWS 发行

go - 编译go时包含目标文件

go - 使用 Gin 访问中间件中的路由

go - Gin Sessions 将状态和代码存储在 URL 中,我想更改它以使我的 URL 更清晰

go - map 似乎在递归中删除值

xml - 解析 xml(来自 Oracle Agile)返回 nil