给定控制器中的一个方法:
public class CustomerController : ApiController
{
[HttpGet]
public CustomerDto GetById([FromUri] int id)
{
.
.
return customerDto
}
}
有没有办法用属性指定支持的媒体类型?例如,CustomerDto 是一个复杂的类,只能使用 JSON (application/json) 序列化,而不是 XML (application/xml),但也可以接受 PDF (application/pdf)。有没有这样的事情:
[HttpGet(Accepts.JSON, Accepts.PDF)]
or
[HttpGet][AcceptJSON][AcceptXML]
or
[HttpGet][Accept("application/json")][Accept("application/pdf")]
如果传入请求不受支持,则可能会返回不支持的异常/状态。
注意 - 我不想将 XML 序列化全部删除,因为可以在全局范围内完成。相反,我想定义每条路线接受的内容。
使用 - ASP.NET WebAPI RC 1(需要升级)+自托管
听起来自定义 ActionFilterAttribute 可能可以解决问题。
创建一个继承自System.Web.Http.Filters.ActionFilterAttribute的新类,重写OnActionExecuting方法。在此方法中,您可以检查请求的标头,查找您不希望支持的内容并返回适当的响应。
自定义 ActionFilterAttribute 的构造函数可以获取您想要处理哪些“接受”类型以及想要拒绝哪些类型的详细信息。
有关自定义 ActionFilterAttribute 的示例,请查看这个帖子 http://www.strathweb.com/2012/05/output-caching-in-asp-net-web-api/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)