2019独角兽企业重金招聘Python工程师标准>>>

一、Action方法的返回类型

a) 操作方法的返回类型有四种:void、简单或复杂类型、HttpResponseMessage类型、IHttpActionResult类型。

b) 如果返回类型为void,请求结束后HTTP状态码为204(No Content),如果返回类型为复杂类型,则对象会被转化为Json字符串后传输。

c) 从图示的Web API的大致交互过程可以看到,Controll返回的是HttpResponseMessage类型,然后转换为HttpResponse提供给调用端。同时也可以自己手动设置在代码中返回一个HttpResponseMessage,并设置HTTP状态。

d) IHttpActionResult

WebAPI 2可以返回IHttpActionResult对象,与MVC的ActionResult类似。实现IHttpActionResult的类有:

返回这些类型是,就不用像HttpResponseMessage那样自己指定HTTP状态码了。

二、Web API Request\Response 数据格式

a) 媒体类型(又名MIME类型)指定数据的格式,例如type/subtype, text/html, text/xml, application/json, image/jpeg 等。在HTTP请求,请求中指定MIME类型的方法是是在头部中使用Accept和Content-Type属性。Accept头部属性指定客户期望的响应数据的格式,Content-Type头部属性指定请求体中的数据的格式,这样接收器可以解析它转换成适当的格式。

三、媒体格式器

a) 媒体格式器的作用便是根据使用Accept和Content-Type属性,来序列化请求或响应数据,以便使Web API可以理解这些数据格式。

WebAPI内置了一些媒体类型格式器:

使用GlobalConfiguration.Configuration.Formatters可以取得MediaTypeFormatterCollection,这里包含所有这些格式器的集合。还可以Add\Remove格式器。

b) JsonMediaTypeFormatter内部使用第三方开源库Json.NET来执行序列化。模式按照PascalCase编写Json属性名,如果想使用camelCase格式,可以在WebApiConfig中配置:

另外,给Formatter集合添加BsonMediaTypeFormatter可以支持BSON(二进制的JSON)的格式化。

四、媒体过滤器

a)与MVC中的过滤器类似,提供AOP的能力,可用于日志记录、异常处理、性能测量、身份认证和授权等。过滤器都实现System.Web.Http.Filters.IFilter接口,可用于创建过滤器的重要接口和类有:

b)假如要创建日志记录类,可以使用Action方法过滤器,有两种方式,实现IActionFilter或者继承ActionFilterAttribute类。

​如果采用实现IActionFilter的方式,因为是要创建类似LogAttribute这样的特性,还需要继承Attribute类。然后实现IActionFilter.ExecuteActionFilterAsync方法。Trace.Wrieline默写写入了输出窗口。

如果采用继承ActionFilterAttribute的方式,可以重写OnActionExecuting、OnActionExecuted方法并记录日志。

学习资料:www.yuanjiaocheng.net (猿教程) 作者:卿文刚

转载于:https://my.oschina.net/u/2327858/blog/1507501

Web API 方法的返回类型、格式器、过滤器相关推荐

  1. 用于将带有查询字符串的复杂对象传递到Web API方法的自定义模型绑定器

    目录 介绍 查询复杂对象的字符串字段 使用和测试FieldValueModelBinder类 FieldValueModelBinder如何工作? 获取源字段和值 将字段部分与对象属性匹配 解析枚举类 ...

  2. soap协议_当SOAP遇上REST!一文解读Web服务Web API方法

    当SOAP遇上REST!一文解读eb服务和Web API方法 SOAP和REST,也许您已经很熟悉它们,希望扩展您的知识或获取新的观点.或者,也许您听说过它们,并正在寻求更好的理解.毕竟,SOAP和R ...

  3. c# webapi返回html,c#-从Web API 2端点返回自定义HTTP状态代码

    c#-从Web API 2端点返回自定义HTTP状态代码 我正在使用WebAPI 2中的服务,并且端点当前返回IHttpActionResult.我想返回状态码BadResult(message),但 ...

  4. 补充上次的将父类作为方法的返回类型

    宠物类 package cn.Animal;public class Animal {public void play() {} } 狗类 package cn.Animal;public class ...

  5. idea查看方法的返回类型和自动出来变量

    idea查看方法的返回类型: //解析request,需要抛异常upload.parseRequest(request); 比如说这时候,要出来,parseRequest()方法的返回类型 这时候可以 ...

  6. java中main方法返回类型是6_[单选] Java application中的主类需包含main方法,main方法的返回类型是什么()。...

    [单选] Java application中的主类需包含main方法,main方法的返回类型是什么(). 更多相关问题 关于超声在人体中传播的速度,叙述正确的有A.与人体组织的弹性有关B.与人体组织的 ...

  7. ASP.NET Web API中的返回值

    本文将Web API中常用的返回值罗列了一下,如需要进一步详细了解,请点击这篇文章 返回值 继承接口 描述 void 无 返回http状态码204,告诉客户端此请求没有返回值 Json<T> ...

  8. java main类型_java中main方法的返回类型是?

    感谢邀请.man方法是void类型,void没有返回值类型 在java语言程序编写时都会涉及到一个main方法,它的格式为: public static void main(String[] args ...

  9. 基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)

    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票! 我的投票地址:点击为我投票 文章目录 前言 1.获取歌曲搜索列表api接口 2.获取单个歌曲详细信息包括歌词 3.总结 前言 首先说 ...

  10. python 操作redis 队列 使用lrange 命令 返回类型格式类型 坑坑坑!!!

    偶然间发现 在使用python 操作队列时   使用rpop 和 lindex 命令时,存储的队列数据为json ,打印时,类型为str字符串类型  但使用lrange 命令取队列数据时,返回的为列表 ...

最新文章

  1. 用python写计算机专业_自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的_cc霜_学生党_教育_教育其他...
  2. 爬取了 48048 条评论数据,解读 9.3 分的《毒液》是否值得一看?
  3. 【C++ 语言】C++字符串 ( string 类 | 创建方法 | 控制台输出 | 字符串操作 | 栈内存字符串对象 | string* )
  4. GDCM:将DICOM文件和XML文件相互转换的测试程序
  5. 【待完成】并发包下常用到线程工具类汇总
  6. Assembly Essence-- 程序集深入探讨:程序集结构及部署
  7. 2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛)
  8. DeepEarth自定义图元的中心位置纠偏
  9. 常用算法(冒泡、插入、选择、快速)和二叉树详解
  10. 【微软力作】虚拟对抗训练:让预训练模型再次强大!
  11. 支持HomeKit、NFC:智汀智能门锁SL1仅需要149元
  12. php怎么设置div圆角,不用图片的DIV圆角(兼容各浏览器)
  13. [天地间]02-瑞士达沃斯小镇
  14. 国际反垃圾邮件组织有哪些?
  15. 音乐app项目开发(一)
  16. java 滑杆和进度条_进度条 和 滑条
  17. Android Binder机制(1):Binder架构分析
  18. 6.17 C语言练习(百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?)
  19. 爬有道在线翻译(已完善)
  20. 剑指offer T14 减绳子

热门文章

  1. OLTP在线事务处理
  2. CS231n李飞飞计算机视觉 循环神经网络
  3. 【从线性回归到BP神经网络】第一部分:协方差与相关系数
  4. hdu acm2309
  5. 【NLP】揭秘马尔可夫模型神秘面纱系列文章(一)
  6. 最简单解决jpa自动生成表后字段乱序问题
  7. html文件系统错误的是,Windows10:文件系统错误2147219196
  8. BUGKU 多次 手动注入+脚本盲注
  9. Linux 文件夹压缩命令总结
  10. Linux _ Day8 Shell编程之字符截取命令