3

这是我的问题:我们的一个客户想要通过在查询字符串中传递 action_name 来访问肥皂动作。可以用wash_out gem吗?

示例网址: http ://example.com/dummy_soap/action?action_name=do_something

任何帮助表示赞赏。

4

1 回答 1

2

有可能的。用于send调用您想要的操作。请注意,这仅在其他操作render在操作结束时显式调用时才有效。另外,不要相信 :action_name 参数。考虑在使用 :action_name 之前根据允许操作的白名单检查它,如果它无效则引发错误。

class DummySoapController < ApplicationController
  soap_service namespace: 'urn:WashOut'

  def action
    send(params[:action_name])
  end

  soap_action "convert_to_string", :args => :integer, :return => :string

  def convert_to_string
    render :soap => params[:value].to_s
  end

  soap_action "convert_to_integer", :args => :integer, :return => :float

  def convert_to_float
    render :soap => params[:value].to_f
  end

end

例如,要获取字符串值,您将使用 URL

http://example.com/dummy_soap/action?action_name=convert_to_string&value=1

或者得到一个浮动

http://example.com/dummy_soap/action?action_name=convert_to_float&value=1

于 2014-07-25T21:20:38.643 回答