如何获取revel golang中的POST params

如何获取revel golang中的POST params,post,go,params,revel,Post,Go,Params,Revel,如何在revel中获取POST请求的参数??我有这个: func (c App) Ndc() revel.Result { fmt.Println(c.Params) //more simple code to return a json... } 我已经测试了很多东西,但都不起作用,所以我更喜欢让代码尽可能干净。这是输出: &{map[Origin:[LHR] Destination:[DME] DepartureDate:[2016-10-31] ArrivalDa

如何在revel中获取POST请求的参数??我有这个:

func (c App) Ndc() revel.Result {
    fmt.Println(c.Params)
    //more simple code to return a json...
}
我已经测试了很多东西,但都不起作用,所以我更喜欢让代码尽可能干净。这是输出:

&{map[Origin:[LHR] Destination:[DME] DepartureDate:[2016-10-31] ArrivalDate:[]] map[] map[] map[] map[Origin:[LHR] Destination:[DME] DepartureDate:[2016-10-31] ArrivalDate:[]] map[] []}
内容很好,但是。。。如何逐一获取这些变量及其值??

谢谢。

这只是一个简单的映射,所有值都在一个切片中。要从请求中获取
原点
值:

c.Params[“原点”][0]
编辑:上述操作无效,但应:

c.Params.Get(“原点”)

这只是一个简单的映射,所有值都在一个切片中。要从请求中获取
原点
值:

c.Params[“原点”][0]
编辑:上述操作无效,但应:

c.Params.Get(“原点”)

我终于找到了答案,我不知道这是不是最好的办法。经过一步一步的跟进,我找到了解决方案:

 fmt.Println(c.Request.Form["Origin"][0])

输出是LHR。

最后我找到了答案,我不知道这是否是最好的方法。经过一步一步的跟进,我找到了解决方案:

 fmt.Println(c.Request.Form["Origin"][0])

输出为LHR。

这取决于请求中的
内容类型是否设置为
application/json
/
text/json
。如果是,则需要将其显式转换为映射:

var j map[string]interface{}
c.Params.BindJSON(&j)
origin := j["Origin"] // etc.
否则,这应该是可行的:

origin := c.Params.Form["Origin"]

这取决于请求中的
内容类型是否设置为
application/json
/
text/json
。如果是,则需要将其显式转换为映射:

var j map[string]interface{}
c.Params.BindJSON(&j)
origin := j["Origin"] // etc.
否则,这应该是可行的:

origin := c.Params.Form["Origin"]

谢谢@TheHippo,但是我得到了这个错误:Go代码app/controllers/app.Go没有编译:无效操作:c.Controller.Params[“Origin”](type*revel.Params不支持索引)@EloyFernándezFranco你说得对。还有另一种方法。编辑了我的答案。再次感谢@TheHippo是的。。。您编辑的代码工作正常。。。现在的问题是什么方法更好(更快、更安全…)??调用函数(c.Params.Get(“Origin”))或检查和索引“对象”(c.Request.Form[“Origin”][0])…@EloyFernándezFranco在速度方面不应该有任何显著差异。如果不进行检查,我会说我的版本更安全,因为会检查是否存在具有该名称的值,而不是盲目访问映射并假设其中存在任何切片。好吧!!在这种情况下,我会用你的。谢谢@TheHippoThanks@TheHippo,但是我得到了这个错误:Go代码app/controllers/app.Go没有编译:无效操作:c.Controller.Params[“Origin”](type*revel.Params不支持索引)@EloyFernándezFranco你说得对。还有另一种方法。编辑了我的答案。再次感谢@TheHippo是的。。。您编辑的代码工作正常。。。现在的问题是什么方法更好(更快、更安全…)??调用函数(c.Params.Get(“Origin”))或检查和索引“对象”(c.Request.Form[“Origin”][0])…@EloyFernándezFranco在速度方面不应该有任何显著差异。如果不进行检查,我会说我的版本更安全,因为会检查是否存在具有该名称的值,而不是盲目访问映射并假设其中存在任何切片。好吧!!在这种情况下,我会用你的。谢谢你,河马