Rails 2 поддерживает запросы JSON POST?
Когда я отправляю данные JSON в запросе POST, мой контроллер не видит эти данные. Эквивалентный XML отлично работает, поэтому JSON просто не поддерживается Rails 2? Есть какой-то другой драгоценный камень, который мне нужно установить?
Я использую Rails 2.0.2, и я создал леса для моей модели. Я могу использовать сгенерированный код для создания записей с помощью браузера или создавать записи, отправляя запросы XML POST с помощью curl.
Теперь я хочу изменить сгенерированный код для поддержки JSON вместо XML. Я заменил format.xml
звонки с format.json
и GET запросы теперь возвращают мне хороший JSON.
Однако, когда я пытаюсь создать запись, отправляя запрос JSON POST, ни один из параметров не передается моему контроллеру.
Чтобы отследить проблему, я заменил create()
Метод моего контроллера с этим:
# POST /some_models
# POST /some_models.json
def create
render :json => params
end
Это просто сбросит содержимое params
хэш, чтобы я мог видеть, что передается.
Я проверяю это с данными XML, используя этот оператор curl:
curl --request POST --cookie cookies.txt -d "<some_model version='6.6' order_by='606'/>" -H "Content-Type:text/xml" http://localhost:3000/some_models.xml
Это прекрасно работает, и я вижу этот вывод:
{"some_model": {"version": "6.6", "order_by": "606"}, "format": "xml", "action": "create", "controller": "some_models"}
Теперь я пробую эквивалент с данными JSON:
curl --request POST --cookie cookies.txt -d '{ "some_model": {"version": "6.6", "order_by": 606} }' -H "Content-Type:application/json" http://localhost:3000/some_models.json
Теперь я не понимаю some_model
ключ в params
хэш:
{"format": "json", "action": "create", "controller": "some_models"}
1 ответ
Согласно этой статье от 25 мая 2008 года:
К счастью, оказывается, что полная поддержка JSON была добавлена в Rails в апреле [2008], что сделало его первоклассным гражданином наряду с XML и обычными полями формы в кодировке URL. Эта функциональность будет официально выпущена в Rails 2.1
В статье упоминается, что до Rails 2.1 использовался этот плагин json_request:
https://github.com/assaf/labnotes/tree/master/ruby/rails_plugins/json_request/