如何使用 'routes' 文件读取 Revel 中的查询参数?

How to read query parameters in Revel using the 'routes' file?

我是 Revel 和 golang 的新手。我需要有关如何在 Revel 中访问查询参数并在路由中配置它的帮助。

示例:localhost:9000/company?name=ABC.

我正在发送上面的 get 请求以从数据库中按名称获取公司。我不知道如何在 routes 文件中配置它。

我的操作有

func (c APP) ShowByName(name string){..}

这是我设置路线的方式:

GET /company?name:name      APP.ShowByName

根据 revel 文档,所有请求参数都收集到单个 Params 对象中,其中包括:

The URL /:path parameters
The URL ?query parameters
Submitted Form values
File multipart uploads

提取的参数可通过 Action 方法获得 parameters

type Params struct {
    url.Values
    Files map[string][]*multipart.FileHeader
}

检查 Params 结构,我们可以观察到它使用 url.Values

根据以上信息查询参数url路由可以设置为:

GET    /company/:name?name            APP.ShowByName

控制器动作:

func (c APP) ShowByName(name string) revel.Result {
    ...
}

我找到了解决方法。

在实际操作中,我放置了以下代码:

c.Params.Query=c.Request.URL.Query()
var limit int
c.Params.Bind(&limit,"limit")

它适用于以下 URL:

localhost:9000?limit=21

这是完整的代码 revel read query parameter

URL 查询参数自动传递给控制器​​。

在您的 routes 文件中,只需指定 URL 路径(忽略查询字符串)。 对于问题中给出的示例 localhost:9000/company?name=ABC,您只需:

(routes file)

GET /company      SomeController.ShowByName

然后在controller中,添加函数参数即可。 Revel 会将这些绑定到适当的查询字符串值:

func (c SomeController) ShowByName(name string) revel.Result {
  if name == "" {
    // handle missing or empty
  }
  // ...
}