Was ist der einfachste Weg, unterschiedliche Inhaltstypen auf der Verlängerung in der URL-Basis zurückzukehren?
-
08-07-2019 - |
Frage
Ich möchte in der Lage sein, die Erweiterung einer URL zu ändern und das Modell in einem anderen Format zu empfangen.
z. wenn
/products/list
gibt eine HTML-Seite eine Liste von Produkten enthält, dann
/products/list.json
würde sie in einer json Liste zurück.
Hinweis: Ich mag die Einfachheit der ASP.NET MVC REST SDK , bedarf es nur etwa 5 Zeilen Code es einzuhaken in, aber das Format wird als Abfragestring spezifiziert Parameter dh /products/list?format=json
das ist nicht das, was ich will, ich könnte diesen Code optimieren, wenn es keine anderen Optionen sind, aber ich will nicht das Rad neu erfinden!
Lösung
Ich schrieb einen Blog-Post, die ein mögliches Beispiel zeigt. Es ist ein bisschen kompliziert, aber vielleicht für Ihre Bedürfnisse arbeiten.
http: // Haacked .com / Archiv / 2009/01/06 / Handling-Formate-based-on-url-extension.aspx
Andere Tipps
Es soll möglich sein, nur zu verwenden Routen in Verbindung mit dem Rest sdk
Wenn Sie die Flexibilität haben, Apache oder etwas ähnliches vor Ihrem Service fallen zu lassen, können Sie immer verwenden mod_rewrite
eine externe http://products/list.json
in http://products/list?format=json
neu zu schreiben, das Ihr Rahmen leichter machen kann.
Anstelle von "list.json", könnten Sie wählen "-Liste / json" und eine Route verwenden wie
{Controller} / {Aktion} / {id}
Dann würde ProductController.List genannt werden, mit einem ID-Parameter von "json". Die .List () -Aktion dann entscheiden, ob eine HTML-Ansicht oder JSON Inhalt zurückzukehren.