Wie aussetzen ich Daten in einem JSON-Format über einen Webdienst mit Rails?
-
09-06-2019 - |
Frage
Gibt es eine einfache Möglichkeit, Daten auf dem Web-Service-Clients in JSON zurück Rails?
Lösung
Rails Ressource gibt eine RESTful-Schnittstelle für Ihr Modell. Lassen Sie uns sehen.
Modell
class Contact < ActiveRecord::Base
...
end
Routen
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
So Dies gibt Ihnen eine API-Schnittstellen, ohne dass spezielle Methoden zu definieren, welche Art von respond bekommt erforderlich
Eg.
/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
Andere Tipps
Rails monkeypatches die meisten Dinge, die Sie würde kümmern uns um eine #to_json
Methode zu haben.
Aus der Spitze von meinem Kopf, können Sie es für Hashes, Arrays tun, und Activerecord-Objekte, die etwa 95% der Anwendungsfälle abdecken sollten Sie vielleicht. Wenn Sie Ihre eigenen benutzerdefinierten Objekte haben, ist es trivial Ihre eigene to_json
Methode für sie zu schreiben, die nur Daten in eine Hash-verklemmen können und dann die jsonized Hash zurück.
Es ist ein Plugin, das genau dies tut, http: //blog.labnotes .org / 2007/12/11 / json_request-Handling-json-Anfrage-in-Schienen-20 /
Und von dem, was ich verstehe diese Funktionalität bereits in Rails ist. Aber gehen Sie diese Blog-Post sehen, gibt es Code-Beispiele und Erklärungen.
Active stellt auch Verfahren mit JSON zu interagieren. So erstellen JSON aus einem AR-Objekt, rufen Sie einfach object.to_json. ein AR-Objekt aus JSON zu erstellen, sollten Sie ein neues AR-Objekt und rufen Sie dann object.from_json .. soweit ich verstand, aber das hat nicht funktioniert für mich.
erstellen können