Come faccio a esporre i dati in formato JSON tramite un servizio web con Rails?
-
09-06-2019 - |
Domanda
C'è un modo semplice per restituire i dati ai client del servizio web in JSON utilizzando Rotaie?
Soluzione
Rails la risorsa fornisce un'interfaccia RESTful per il tuo modello.Staremo a vedere.
Modello
class Contact < ActiveRecord::Base
...
end
Percorsi
map.resources :contacts
Controller
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
Questo vi dà una interfacce API, senza la necessità di definire metodi speciali per ottenere il tipo di rispondere richiesto
Es.
/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
Altri suggerimenti
Guide di monkeypatches la maggior parte delle cose che ci si cura per avere un #to_json
metodo.
Fuori della parte superiore della mia testa, si può fare per l'hash, matrici, e ActiveRecord oggetti, che dovrebbe coprire circa il 95% dei casi d'uso che si potrebbe desiderare.Se si dispone di oggetti personalizzati, è banale scrivere il proprio to_json
metodo per loro, che si può semplicemente marmellata di dati in un hash e quindi restituire il jsonized hash.
C'è un plugin che fa proprio questo, http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/
E da quello che ho capito questa funzionalità è già in Rails.Ma vai a vedere il post del blog, ci sono esempi di codice e spiegazioni.
ActiveRecord inoltre fornisce i metodi per interagire con JSON.Per creare JSON di un AR oggetto di oggetto di chiamata.to_json.PER creare un AR oggetto di JSON si dovrebbe essere in grado di creare un nuovo AR oggetto e quindi oggetto di chiamata.from_json..per quanto ho capito, ma questo non ha funzionato per me.