这可能是一个学术/哲学问题,但假设我在Rails中有一个资源
localhost:3000/resources/2foobar
,这就好像
foobar
当时不在那里。虽然一开始这很酷,但它回避了一个问题,即幕后是否可能缺少一些东西。我通常信任开源项目,Rails已经存在了足够长的时间,我对此充满信心,但如果我们能够验证参数,以检查它是否是严格的数字,而不仅仅是从数字开始,不是更好吗?例如,我可以修改我的
show
类似方法
if (Integer(params[:id]) != nil rescue false)
render json: @resource
else
head: 400
end
有人能解释一下治疗的理由吗
1duh
像
1
,在Rails中?
编辑
示例请求
$ curl 'localhost:3000/resources/1ds'
对应日志
Started GET "/resources/1ds" for ::1 at 2016-06-26 20:35:59 +0100
Processing by ResourcesController
Parameters: {"id"=>"1ds"}
Resource Load (0.3ms) SELECT `resources`.* FROM `resources` WHERE `resources`.`id` = 1 LIMIT 1
Completed 200 OK in 9ms (Views: 0.7ms | ActiveRecord: 0.3ms)
卷曲返回
{"id":"1","data":"foobarsampledata"}