URLの拡張子に基づいて異なるコンテンツタイプを返す最も簡単な方法は何ですか?
-
08-07-2019 - |
質問
URLの拡張子を変更し、別の形式でモデルを受信できるようにしたい。
e.g。 if
/products/list
製品のリストを含むHTMLページを返し、
/products/list.json
jsonリストでそれらを返します。
注: ASP.NET MVC REST SDK 、フックするのに約5行のコードのみが必要ですが、形式はクエリ文字列パラメーターとして指定されます。つまり、< code> / products / list?format = json これは私が望むものではありません。他のオプションがない場合はこのコードを微調整できますが、車輪を再発明したくありません!
解決
可能な例を示すブログ記事を書きました。少し複雑ですが、ニーズに合っているかもしれません。
http:// haacked .com / archive / 2009/01/06 / handling-formats-based-on-url-extension.aspx
他のヒント
残りのSDKと組み合わせてルートを使用することができるはずです
Apacheなどをサービスの前にドロップする柔軟性がある場合は、いつでも mod_rewrite
は、外部の http://products/list.json
を http:// products / listに書き換えますか? format = json
。フレームワークでより簡単にレンダリングできます。
&quot; list.json&quot;の代わりに&quot; list / json&quot;を選択できます。次のようなルートを使用します
{controller} / {action} / {id}
その後、ProductController.Listが呼び出され、IDパラメーターが「json」になります。 .List()アクションは、HTMLビューまたはJSONコンテンツを返すかどうかを決定します。