新手问题 怎样让 Rails 的 params 根据请求来获取对应类型的参数?

wfwdex · 2017年07月28日 · 最后由 wfwdex 回复于 2017年07月31日 · 4916 次阅读

比如我的接口是POST类型,我只想让客户端发起请求传参时使用Form Data,不接受从 URL 传来的参数。

现在很多客户端同事不知道这个问题,把POST请求的参数全部通过 URL 传到后端,而 Rails 里使用 params 又能正常获取 URL 传来的参数。

问题是:Rails 如何优雅地只允许获取 Form DataURL 传来的参数?


今天发现用 json 发到后端的请求都会被正常解析到 params 里,本来参数值应该是字符型,但由于 json 支持 integer,导致前端使用了 integer,引发了 bug。

我试了下 @cxh116 提供的方法,放在 action 中试了下,结论如下:

p request.request_parameters  #获取post  form data参数
p request.query_parameters    #获取get参数

参看其链接说明,也有别名可以用。就是不知道用别名是不是不好

p request.POST  #获取post  form data参数
p request.GET    #获取get参数

为什么要强制 form data 呢?

@cxh116 @cym2015 谢谢,以后遇到这种情况就用 request.POST 了,感觉更简洁一些。

lithium4010 回复

因为如果不强制的话,有的客户端会在 post 请求里面把参数用 query 传过来,导致以后遇到意想不到的 bug,比如参数里面包含&字符等等。

再就是客户端这样使用也不符合规范。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号