次の Sinatra コードがあります。
post '/bucket' do
# determine if this call is coming from filling out web form
is_html = request.content_type.to_s.downcase.eql?('application/x-www-form-urlencoded')
# If this is a curl call, then get the params differently
unless is_html
params = JSON.parse(request.env["rack.input"].read)
end
p params[:name]
end
Curl を使用してこれを呼び出すと、params
値がありますが、これが Web フォーム経由で呼び出されると、params
何nil
もparams[:name]
ありません。なぜそれが起こるのかを理解するのに数時間を費やし、他の人に助けを求めましたが、何が起こっているのかを本当に知ることはできませんでした.
注意すべきことの 1 つは、次の行をコメントアウトした場合です。
params = JSON.parse(request.env["rack.input"].read)
次にparams
、「Web フォーム」投稿の正しい値を持ちます。
実際には、params
このコードが CURL 呼び出しによって呼び出されている場合に値を取得することが目標なので、次を使用しました。
params = JSON.parse(request.env["rack.input"].read)
しかし、それはウェブフォームの投稿を台無しにしました. この謎を解ける人はいますか?