是否有可能使用相同的路由托管MVC和Web API控制器,但提供不同的内容?MVC和Web API控制器:相同的路由,不同的内容
我想要的是根据请求的Accept头中的内容类型来选择正确的控制器。
例如:
GET /users/1 [Accept: text/html]
将调用一个MVC响应。
GET /users/1 [Accept: application/json]
将调用Web API响应。
我意识到可以直接从Web API渲染Razor视图并直接返回HTML,但是之后我无法使用MVC的优点来呈现我的主站点(除非有人告诉我可以做任何事情在网络的API,MVC可以做)
相关(但不相同)的问题:ASP.NET MVC 4 ApiController and Normal Controller Routes
我喜欢一个HttpHandler或HTTP模块,我正在考虑加入LOGI的想法如果请求是用于HTML以外的其他任何内容,但将它移到管道上更像是一个更好的主意,那么MVC控制器将重定向到api/users/1。因为我们有多种内容类型(json,xml和messagepack)和属性路由而不是全局路由,所以我不那么热衷于扩展想法。 –
添加了一个编辑处理contentType的替代方法,除了仅过滤允许的扩展类型外,您还可以使用正则表达式筛选器。 –