gpt4 book ai didi

asp.net-web-api - 每个方法的 ASP.NET Web API 支持的媒体类型

转载 作者:行者123 更新时间:2023-12-04 19:12:54 27 4
gpt4 key购买 nike

给定 Controller 中的方法:

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 方法。在此方法中,您可以检查请求的 header ,查找您不想支持的内容并返回适当的响应。

您的自定义 ActionFilterAttribute 的构造函数可以获取您想要处理的“接受”类型以及您想要拒绝的“接受”类型的详细信息。

有关自定义 ActionFilterAttribute 的示例,请查看 this post .

关于asp.net-web-api - 每个方法的 ASP.NET Web API 支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13422524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com