为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用“路由”文件读取 Revel 中的查询参数?

如何使用“路由”文件读取 Revel 中的查询参数?

Go
幕布斯6054654 2021-12-13 18:41:11
我是 Revel 和 golang 的新手。我需要关于如何访问 Revel 中的查询参数并在路由中配置它的帮助。例子:localhost:9000/company?name=ABC。我正在发送上面的 get 请求,以从数据库中按名称获取公司。我不知道如何在routes文件中配置它。我的行动有func (c APP) ShowByName(name string){..}这就是我设置路线的方式:GET /company?name:name      APP.ShowByName
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我找到了解决方案。


在行动中,我放置了以下代码:


c.Params.Query=c.Request.URL.Query()

var limit int

c.Params.Bind(&limit,"limit")

它适用于以下 URL:


localhost:9000?limit=21

这是该revel 读取查询参数的完整代码


查看完整回答
反对 回复 2021-12-13
?
守着一只汪

TA贡献1872条经验 获得超3个赞

根据 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 {

    ...

}


查看完整回答
反对 回复 2021-12-13
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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


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


(routes file)


GET /company      SomeController.ShowByName

然后在控制器内,只需添加函数参数。Revel 会将这些绑定到适当的查询字符串值:


func (c SomeController) ShowByName(name string) revel.Result {

  if name == "" {

    // handle missing or empty

  }

  // ...

}


查看完整回答
反对 回复 2021-12-13
  • 3 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信