Я только что заметил, что Rails 3.2 автоматически разбирает SOAP-запросы в хэш params (ActionDispatch :: ParamsParser Rack middleware). Итак, я решил реализовать шлюз в Rails. Так как я на самом деле не хочу реализовывать полнофункциональный SOAP-сервер - все, что мне нужно, - это заставить его работать для текущего клиента SOAP моего клиента, - я просто прочитаю необходимые данные из хэша params и создаю xml-ответ используя Builder и опубликуйте статический файл wsdl, если он им нужен. Это будет менее 20 строк кода.
конфиг / routes.rb
Gateway::Application.routes.draw do
match "/clientx/echo" => "clientx#echo"
end
приложение / контроллеры / clientx_controller.rb
class ClientxController < ApplicationController
def echo
# authenticate client
# parse params
# send and receive rest request
# render response
end
end