是否有可能使用相同的路由託管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的替代方法,除了僅過濾允許的擴展類型外,您還可以使用正則表達式篩選器。 –