Как мне предоставить данные в формате JSON через веб-сервис с использованием Rails? - PullRequest
6 голосов
/ 12 сентября 2008

Есть ли простой способ вернуть данные клиентам веб-службы в JSON с помощью Rails?

Ответы [ 5 ]

10 голосов
/ 29 октября 2008

Ресурс 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
4 голосов
/ 12 сентября 2008
2 голосов
/ 12 сентября 2008

Rails исправляет большинство вещей, которые вам нужны, чтобы иметь метод #to_json.

Вдобавок ко всему, вы можете сделать это для хэшей, массивов и объектов ActiveRecord, которые должны покрывать около 95% случаев использования, которые вы можете захотеть. Если у вас есть свои собственные объекты, просто написать для них собственный метод to_json, который может просто заклинить данные в хеш, а затем вернуть jsonized хеш.

1 голос
/ 16 сентября 2008

Есть плагин, который делает это, http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/

И из того, что я понимаю, этот функционал уже есть в Rails. Но посмотрите этот пост в блоге, здесь есть примеры кода и объяснения.

0 голосов
/ 09 декабря 2008

ActiveRecord также предоставляет методы для взаимодействия с JSON. Чтобы создать JSON из объекта AR, просто вызовите object.to_json. Чтобы создать объект AR из JSON, вы должны иметь возможность создать новый объект AR и затем вызвать object.from_json ... насколько я понял, но у меня это не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...