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/

Другие вопросы по тегам