2013-05-17 4 views
5

Rails 4 애플리케이션에 Content-Type : "application/x-www-form-urlencoded"으로 데이터를 게시하면 request.body.read로 요청 본문을 가져올 수 있습니다.Rails 4 및 content-type application/json으로 읽기 전에 request.body에서 되감기가 필요합니까? 아니면 새로운 접근 방식이 있습니까?

그러나 게시 할 때 Content-Type "application/json"으로 데이터를 보내면 request.body.rewind를 먼저 호출하지 않으면 request.body.read가 비어 있습니다.

두 질문 :

1) 어떻게 먼저 스트림에 되감기를 호출하지 않고 원시 요청 본문을받을 수 있나요?

2) 클라이언트가 콘텐츠 형 애플리케이션/JSON에게

참고 보내면 가능 요청 본문에서 JSON 파싱 레일 (또는 랙)를 중지되는 것을 레일 4 파싱 JSON 같은 레일 3, params에서는 사용할 수 있지만 request.body.read에는 되감기가 먼저 필요하지 않습니다.

답변

4

is indeed a bug를 해결하는 것 같았다. 수정 프로그램은 마스터에 통합되었으며 아마도 4.0.1에서 팝업되어야합니다.

+0

감사합니다. 벽에 내 머리를 한동안 부딪 혔습니다. –

+1

Woah, 늦게 받아 들여서 죄송합니다. 나는이 질문에 대해 잊어 버렸다! –

0

ActionDispatch :: ParamsParser에 버그가있는 것 같습니다. 는 설정에서 다음 퍼팅/application.rb는

config.middleware.delete ActionDispatch::ParamsParser 
2

request.body.read 대신 request.env를 사용하십시오.