http-headers - 具有 ASP.NET MVC Web API 的 ASP.NET MVC 站点,结果类型/ Controller 由 Accept header 确定

标签 http-headers asp.net-mvc-4 asp.net-web-api

我一直在开发一个 Web API,我希望它是 RESTful 的。举个例子:

http://product.domain.local/person

将提供一个带有漂亮 UI 的网页,由 ASP.NET MVC(针对人类)提供服务。

但是,如果我在 HTTP header 中请求接受 json/xml,我想将请求重定向到我的 Web API Controller 。 IE。以及 MapHttpRoute,我想根据请求的 contentType 进行映射。

因此,当我的 API 返回 ID 时:

http://product.domain.local/person/1

如果人类使用它,他们会得到一个网页,如果客户端应用程序使用它,他们会得到 JSON/XML(因为他们会修改 Accept header ),这允许我使用 HTTP 重定向等来工作走向休息。

但我找不到办法做到这一点。有可能吗?

最佳答案

我发现这相当困难。 Webapi 非常擅长基于接受类型 header 进行路由,但不擅长处理 View 。 MVC 擅长 View ,但不擅长处理各种响应。

如果有什么不同的话,我认为最简单的就是让 MVC 最简单。根据接受类型处理所需的灵 active ,您可能只需实现一个通用函数(返回一个 ActionResult),并在其中根据您的 head(或您的其他任何内容)返回正确的类型。愿意)。

关于http-headers - 具有 ASP.NET MVC Web API 的 ASP.NET MVC 站点,结果类型/ Controller 由 Accept header 确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12533785/

相关文章:

Golang 错误的http请求头

google-chrome - 无法在 Chrome 中加载 PDF 文档

flutter - 如何在 flutter web 中支持 HTTP header NetworkImage

c# - 自定义授权过滤器中的访问 session

c# - 将单例与依赖注入(inject)一起使用(CaSTLe Windsor)

java - 状态码 404,ai.api.AIServiceException : Uri is not found or some resource with provided id is not found

javascript - JQuery 验证错误放置

c# - 尝试使用 WebAPI 时获取 "No type was found that matches the controller named ' SampleSlashBaseService'"

c# - 如何从同一 Azure AD 中的另一个 Web 应用程序访问 Web api?

c# - REST Web 服务 - 获取和创建的不同类型