Tengo una muy simple servidor de rack Rubí, como:Cómo recibir un objeto JSON con el estante
app = Proc.new do |env|
req = Rack::Request.new(env).params
p req.inspect
[200, { 'Content-Type' => 'text/plain' }, ['Some body']]
end
Rack::Handler::Thin.run(app, :Port => 4001, :threaded => true)
Cada vez que enviar una solicitud HTTP POST al servidor con un objeto JSON:
{ "session": {
"accountId": String,
"callId": String,
"from": Object,
"headers": Object,
"id": String,
"initialText": String,
"parameters": Object,
"timestamp": String,
"to": Object,
"userType": String } }
No recibo nada. Puedo detectar la solicitud recibida pero no puedo obtener la información. Los resultados en mi consola para puts req.inspect
es algo así como:
"{}"
¿Cómo se supone que voy a obtener los datos?
Me trataron de cambiar eso con algo como:
request = Rack::Request.new env
object = JSON.parse request.body
puts JSON.pretty_generate(object)
Pero me estoy haciendo la siguiente advertencia:
!! Unexpected error while processing request: can't convert StringIO into String
Lo que se envía un ejemplo de la JSON? – tadman
nada enviada, JSON se recibe algo como el ejemplo anterior con la raíz de la sesión – Eqbal
Ok, parece que se supone que debo usar algo como:. msg = JSON.parse env [ 'rack.input'] leer Entonces sólo tiene que utilizar params en msg hash, al menos me funcionó de esta manera – Eqbal