开发者

What is the simplest way to return different content types based on the extension in the URL?

开发者 https://www.devze.com 2022-12-09 13:26 出处:网络
I\'d like to be able to change the extension of a url and recieve the model in a different format. e.g. if

I'd like to be able to change the extension of a url and recieve the model in a different format.

e.g. if

/products/list

returns a html page containing a list of products, then

/products/list.json

would return them in a json list.

Note: I like the simplicity of the ASP.NET MVC REST SDK, it only requires about 5 lines of code to hook it in, but the format is specified as a query string parameter i.e. /products开发者_Go百科/list?format=json which is not what I want, I could tweak this code if there are no other options, but I don't want to reinvent the wheel!


I wrote a blog post that shows one possible example. It's a tiny bit complicated, but might work for your needs.

http://haacked.com/archive/2009/01/06/handling-formats-based-on-url-extension.aspx


You should be able to just use routes in conjunction with the rest sdk


If you have the flexibility to drop Apache or something similar in front of your service, you can always use mod_rewrite to rewrite an external http://products/list.json into http://products/list?format=json which your framework can render more easily.


Instead of "list.json", you could choose "list/json" and use a route like

{controller}/{action}/{id}

Then ProductController.List would be called, with an ID parameter of "json". The .List() action then would decide whether or not to return an HTML view or JSON content.

0

精彩评论

暂无评论...
验证码 换一张
取 消