2009-07-04 6 views
5

Ich möchte die Inhaltsverhandlung für einige Ressourcen in einer Rails-App implementieren. Ich verwende Mootools und werde wahrscheinlich den Inhaltstyp, der von einer XMLHTTPRequest akzeptiert wird, auf "application/json" anpassen.RESTful Content Negotiation in Rails

Gibt es eine Möglichkeit, diese Informationen in meinem Controller zu erfassen und JSON-Antworten anstelle von XHTML zu generieren?

Ich versuche, wie etwas zu tun, zu vermeiden:

http://site/resource/1?format=JSON 

... wie es meine URL dirties up, erlegt ein gewisses Maß an Redundanz und ist nicht so flexibel.

Danke!

Antwort

4

Sie können eine respond_to Strophe in Ihrem Controller-Methode wie folgt verwenden:

respond_to do |format| 
    format.html { # Generate an HTML response... } 
    format.json { # Generate a JSON response... } 
end 

Rails bestimmt die Antwortformat auf den Wert des HTTP-basierten Header der Clients übernehmen.

1

Sicher http://site/resource/1.json sollte funktionieren? Sie müssen es vielleicht in Ihrer Rails-Umgebung einrichten, aber je nachdem, wie aktuell Ihre Rails-Version ist, bezweifle ich es.

0

Nach viel Forschung, während Rails hat alles, um automatisch eine Vorlage für die Ausgabe auswählen, erfordert es immer noch den Anruf an respond_to für jeden, den Sie unterstützen möchten.

8

http://site/resource/1.json ist nicht die richtige Verwendung von Content-Negotiation. Der Punkt ist, dass die URL die gleiche bleiben sollte, aber der Client fragt nach einer bestimmten Darstellung (JSON, PDF, HTML usw.), basierend auf HTTP-Headern, die er mit der Anfrage sendet.

Verwandte Themen