使用 rest-client 发布请求创建新人
Posted
技术标签:
【中文标题】使用 rest-client 发布请求创建新人【英文标题】:Create new person with rest-client post request 【发布时间】:2013-09-12 09:45:54 【问题描述】:我创建了一个简单的演示应用,进行了一些实验:
rails new rumba
rails g scaffold People name:string
然后我写了一个小程序来发出一个帖子请求:
require 'rest_client'
response = RestClient.post 'localhost:3000/people', :people => :name => 'Joseph'
puts response
到目前为止,它有效并产生了新的人。 我面临的唯一问题是我认为这不适用于heroku,因为我没有提供身份验证令牌:
Started POST "/people" for 127.0.0.1 at 2013-09-09 00:08:10 +0200
Processing by PeopleController#create as XML
Parameters: "person"=>"name"=>"Joseph"
WARNING: Can't verify CSRF token authenticity
←[1m←[35m (0.0ms)←[0m begin transaction
←[1m←[36mSQL (2.0ms)←[0m ←[1mINSERT INTO "people" ("created_at", "name", "upd
ated_at") VALUES (?, ?, ?)←[0m [["created_at", Sun, 08 Sep 2013 22:08:10 UTC +0
0:00], ["name", "Joseph"], ["updated_at", Sun, 08 Sep 2013 22:08:10 UTC +00:00]]
所以我的问题是如何在我的 RestClient.post 请求中提供身份验证令牌?
【问题讨论】:
【参考方案1】:一种解决方案是创建您自己的真实性令牌。你需要做几件事。
Turn off csrf token 在 Rails 中。
创建一个可以在 Heroku 应用中为您提供真实性令牌的操作。
向上述操作发出请求,然后将提供给您的真实性令牌存储在您的应用中。
当请求发送到您的 Heroku 应用程序时,创建一个过滤器,在您的操作拯救一个人之前验证真实性令牌。
由于您在玩,您总是可以将令牌设置为DateTime
,然后检查令牌的年龄以验证它。但是,如果您想在生产站点上执行此操作,则必须更多地考虑如何创建真实性令牌。
【讨论】:
除了 post-request 之外,您知道另一种从 ruby 程序创建新用户的方法吗? 除了通过在终端中运行heroku run rails console
在 heroku 控制台中创建它之外,没有。实际上,如果您只想创建示例数据,则可以通过 rake 任务创建一堆记录。
也许你能帮我解决我的新问题:***.com/questions/18693983/…以上是关于使用 rest-client 发布请求创建新人的主要内容,如果未能解决你的问题,请参考以下文章
如何将此 curl 命令转换为 Ruby rest-client put 请求?
使用 rest-client 文件上传在 Yandex 上进行 Ruby 反向图像搜索
如何使用基于 HttpClient 和 .net4 的 Rest-client 进行身份验证