0

我正在使用 Rails 3 编写一个服务。该服务主要提供一些 API 方法,但也有一些面向最终用户的特殊网页,界面友好——这些网页基本上是 API 的“封面”。

所以我需要做的是进行一些编码CoverController,然后重定向到 API 方法(不同的控制器)。这个方法需要通过调用,POST因为它包含一些最终用户不应该看到的敏感信息(例如访问令牌)。

据我了解HTTP标准不可能通过重定向POST,但我需要调用的方法只是相邻类中的另一个函数!有没有办法在params正确设置所有内容(等)的情况下调用它,就好像它是从浏览器调用的一样?还是我应该只使用Net::HTTP::Post并打电话给自己?

4

2 回答 2

0

你可以调用方法:#在控制器中

# action 1
def action1
  ...
  action2
end

# must be called via post
def action2
  ...
end

这当然是假设 action2 可以使用传递给 action 1 的现有参数列表。否则,您也可以将其填满。

于 2013-01-11T13:33:43.983 回答
0

我认为你的想法是错误的。Rails 3 非常好,您可以调用操作,结果取决于您调用操作的方式。

小例子:一个返回当前时间的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 页面。这样您就不会重复代码,并遵守操作由用户发起或在另一个操作之后重定向到的规则。

其他开发人员也将理解您的代码,并将其准确放置在它所属的位置。

顺便说一句:没有通过使用 post 来“隐藏”合理参数之类的东西。任何浏览器都使用一个快捷方式显示此信息。

于 2013-01-11T15:02:10.753 回答