2

Rails3.2.6がjsonを含むマルチパートPOSTリクエストを解析している理由を理解するのに少し問題があります。

'問題のある'curlコマンド:

curl -i -X POST --silent http://localhost:3000/foo.json --form foo='{"name":"bar"};type=application/json'

Railsは次のように解釈します。

p params[:foo] #=> "{\"name\":\"bar\"}"

値が(解析されたJSONの)ハッシュではなく文字列であることに注意してください。

curlによって送信されたヘッダーは正しいようです。

> POST /foo.json HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: localhost:3000
> Accept: */*
> Content-Length: 208
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------959d0620faa3

マルチパートのタイプも正しいようです:

------------------------------959d0620faa3
Content-Disposition: form-data; name="foo"
Content-Type: application/json

{"name":"bar"}
------------------------------959d0620faa3--

誰かが、文字列表現ではなく、params [:foo]が解析されたjsonハッシュを返す場所に到達するための最良の方法を理解するのを手伝ってもらえますか?

ありがとうございました。

4

1 に答える 1

1

Railsはデフォルトではjsonパラメーターを解析しません。手動で解析する必要があります。

于 2012-07-16T16:37:32.583 に答える