Как мне предоставить данные в формате JSON через веб-сервис с помощью Rails?
-
09-06-2019 - |
Вопрос
Есть ли простой способ вернуть данные клиентам веб-сервисов в формате JSON с помощью Rails?
Решение
Ресурс Rails предоставляет RESTful-интерфейс для вашей модели.Давайте посмотрим.
Модель
class Contact < ActiveRecord::Base
...
end
Маршруты
map.resources :contacts
Контроллер
class ContactsController < ApplicationController
...
def show
@contact = Contact.find(params[:id]
respond_to do |format|
format.html
format.xml {render :xml => @contact}
format.js {render :json => @contact.json}
end
end
...
end
Таким образом, это дает вам интерфейсы API без необходимости определять специальные методы для получения требуемого типа ответа.
Например.
/contacts/1 # Responds with regular html page
/contacts/1.xml # Responds with xml output of Contact.find(1) and its attributes
/contacts/1.js # Responds with json output of Contact.find(1) and its attributes
Другие советы
Rails обезьяны исправляет большинство вещей, о которых вам хотелось бы иметь #to_json
метод.
На мой взгляд, вы можете сделать это для хэшей, массивов и объектов ActiveRecord, что должно охватывать около 95% случаев использования, которые могут вам понадобиться.Если у вас есть свои собственные объекты, написать их очень просто. to_json
для них метод, который может просто втиснуть данные в хеш, а затем вернуть хэш в формате jsonized.
Есть плагин, который делает именно это,http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/
Насколько я понимаю, эта функциональность уже есть в Rails.Но посмотрите этот пост в блоге, там есть примеры кода и пояснения.
ActiveRecord также предоставляет методы для взаимодействия с JSON.Чтобы создать JSON из объекта AR, просто вызовите object.to_json.ЧТОБЫ создать объект AR из JSON, вы должны иметь возможность создать новый объект AR, а затем вызвать object.from_json..насколько я понял, но у меня это не сработало.