我正在使用Rails 3编写一个服务。该服务主要提供一些API方法,但也有一些特殊的网页为最终用户提供友好的界面——这些网页基本上是API的"掩护"。
所以我需要做的是在CoverController
中做一点编码,然后重定向到API方法(不同的控制器)。这个方法需要通过POST
调用,因为它包含一些最终用户不应该看到的敏感信息(例如访问令牌)。
正如我所理解的HTTP标准是不可能通过POST
重定向,但我需要调用的方法只是相邻类中的另一个函数!是否有一种方法来调用它与一切(params
等)正确设置,如果它是从浏览器调用?或者我应该使用Net::HTTP::Post
并调用我自己?
你可以调用这个方法:# in controller
# action 1
def action1
...
action2
end
# must be called via post
def action2
...
end
当然,前提是action2可以使用传递给action 1的现有参数列表。否则,也可以加满。 小示例:一个返回当前时间的api:
def gettime
@time = new Date
# and do all other important stuff
respond_to do |format|
format.json { render json: @time }
format.html { render 'gettime' } # renders gettime.html.erb
end
end
如果作为api调用,它返回一个json对象。如果从浏览器调用,它将返回一个html页面。这样,您就不会重复代码,并且遵守操作由用户发起或重定向到另一个操作之后的规则。
其他开发人员也将理解你的代码,它将被准确地放置在它所属的位置。
BTW:没有这样的事情,"隐藏"合理的参数使用post。任何浏览器都可以通过一个快捷方式显示此信息。