Sto costruendo una sorta di proxy.
Quando chiamo un URL in un'applicazione rack, inoltro la richiesta a un altro URL.Invia richiesta con body_stream e parametri
La richiesta I forward è un POST con un file e alcuni parametri.
Desidero aggiungere altri parametri.
Ma il file può essere abbastanza grande. Quindi lo invio con Net::HTTP#body_stream
anziché Net::HTTP#body
.
Ricevo la mia richiesta come oggetto Rack::Request
e creo il mio oggetto Net :: HTTP con quello.
req = Net::HTTP::Post.new(request.path_info)
req.body_stream = request.body
req.content_type = request.content_type
req.content_length = request.content_length
http = Net::HTTP.new(@host, @port)
res = http.request(req)
Ho provato diversi modi per aggiungere i parametri del proxy. Ma sembra che nulla in Net :: HTTP consenta di aggiungere parametri a una richiesta body_stream, solo a un body uno.
Esiste un modo più semplice per eseguire il proxy di una richiesta di rack in questo modo? O un modo pulito per aggiungere i miei parametri alla mia richiesta?
perché 'req.set_form_data (: some => 'data')' non funziona? – mikezter
Perché definisce '# body' e ripristina' # body_stream', quindi perdo tutti i dati precedentemente definiti. –