Zmiana metody POST na metode GET

Witam mam taki problem,

chcialbym stworzyc prosta aplikacje ktora przechwytuje wszystkie requesty metoda POST do domeny.

http://domena.com/id=6049 (metoda POST)

i przesłac dalej do innej domeny metoda GET

http://innadomena.com/id=6049 (metoda GET)

Chce uzyc Rails 3 bez baz danych. Poniewaz nie jestem zbyt zaawansowanym programista prosilbym o wszelkie wskazowki jak mniej wiecej to zrobic i czego uzyc. Moze ktos robil podobne projekty i moze mi pomoc, byłbym bardzo wdzieczny.

Naprzyklad mam aplikacje uruchomiona pod adresem http://0.0.0.0:3000 . Jak przechwycic wszystkie requesty do tej domeny ktore przyszly metoda POST ?

Tutaj chyba najlepiej pasować będzie Sinatra (a nie całe Railsy):
http://www.sinatrarb.com/

I wtedy coś w rodzaju:

post '/*' do redirect 'http://drugadomena' end
(jeśli dobrze pamiętam że redirect domyślnie jest na GET)

Rewrite w apache albo nginx. W zależności co to jest ‘przesłać dalej’ będzie to albo redirect, albo proxowanie.

Ugh, racja. Zasugerowałem się tym pragnieniem użycia Railsów :slight_smile:

Dzieki za pomoc, musze uzyc rails 3, gdyz bede mial wiecej niz jeden request do przechwycenia:

np:

http://domena.com/controller/akcja1?params1=2&params2=2
http://domena.com/controller/akcja2?params1=2&params2=2

Jak zdefiniowac
Takze w tym przypadku bede musial stworzyc jeden kontroler i w nim akcje ktore po wywolaniu metoda POST beda przekierowywane na na inne domeny metoda GET. Jak zdefiniowac routing aby w akcji wykorzystac wartosci parametrow params1 i params2?

Jak tak bardzo chcesz to robić na poziomie aplikacji to zrób to na poziomie racka. Googlaj za “rack proxy middleware”. Na szybko znalazłem http://coderack.org/users/cwninja/middlewares/18-rackproxy .

Najlepiej to po prostu Rack i tyle. Rack rewrite https://github.com/jtrupiano/rack-rewrite

Jak w akcji w kontrolerze moge wywolac przekierowanie metoda GET do jakiejs strony?

Ok uzylem Net::HTTP.get Dzieki wielkie za pomoc.

Witam, ponownie,

jak moge napsiac test funkcjonalny dla takiej metody:

def metoda
Net::HTTP.get(URI.parse(“http://domena2.org/akcja?id=#{params[:id]}”))
render :nothing => true
end

Narayie mam cos takiego (metoda POST):

should ‘post metoda’ do
post(:metoda, {‘id’ => “params1”})
assert_response :success
end

Chciałbym sprawdzic czy po takim wywolaniu metody otrzymam przekierowanie na “http://domena2.org/akcja?id=#{params[:id]}

assert_redirected_to - http://rails.rubyonrails.org/classes/ActionController/Assertions/ResponseAssertions.html#M000364 ?

should 'redirect to domena2 on post metoda' do post :metoda, :id => "params1" assert_response :redirect assert_redirected_to "http://domena2.org/akcja?id=params1" end
http://guides.rubyonrails.org/testing.html#rails-specific-assertions

Polskie nazwy (metoda, akcja, domena) strasznietu brzydko wyglądają.

Dostaje komunikat:

Expected response to be a <:redirect>, but was <200>

Zdecyduj się.

Albo chcesz przekierować usera (wtedy test jest dobry, kod zły).

Albo chcesz za sceną wysłać żądanie do innego serwera, a userowi pokazać jakiś tekst, albo cokolwiek (wtedy kod jest dobry, test zły).
Jeśli to drugie, to zainteresuje Cię https://github.com/bblimke/webmock