加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – ASP.NET WebAPI支持每种方法的媒体类型

发布时间:2020-12-16 07:00:05 所属栏目:asp.Net 来源:网络整理
导读:给定控制器中的方法: public class CustomerController : ApiController{ [HttpGet] public CustomerDto GetById([FromUri] int id) { . . return customerDto }} 有没有办法用属性指定支持的媒体类型?例如,CustomerDto是一个复杂的类,只能使用JSON(applic
给定控制器中的方法:

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的示例,请查看this post.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读