Как мне предоставить данные в формате JSON через веб-сервис с помощью Rails?

StackOverflow https://stackoverflow.com/questions/57665

Вопрос

Есть ли простой способ вернуть данные клиентам веб-сервисов в формате 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..насколько я понял, но у меня это не сработало.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top