asp.net web api 的输入输出

web api 序列化规则

web api使用内容协商的规则来解和序列化输,根据请求的accept来选择不同的mediaformatter,支持自定义formatter来解析自定义类型。框架预先定义三种formatter可供选择,xml、json、BSON(二进制的json),在formatter上可以定义不同的校验规则,详情见

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/ 

web api 输入参数绑定

默认的对于值类型的参数,web api会从URI里解析参数,如果是复杂类型参数,会试图从body中取

可以使用[FromUri]和【FromBody】来改变默认的参数位置,由于body没有放缓存里,body里的内容只能取一次,所以不能有多个FromBody参数

FromBody和FromUri只是两个特殊的ModelBindler,我们可以自定义ModelBindler,自己从request里取数据映射到参数上。

详情见https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

web api 返回值类型

web api  的返回值有如下4种,空,IHttpActionResult,HttpResoponseMessage,其他,对于这4中,web api的处理为,空,转换为204,HttpResoponseMessage直接返回,IHttpActionResult实质为HttpResponseMessage的工厂类,执行接口ExcuteAsync获取HttpResoponseMessage对象返回,其他对象类型,返回序列化并返回200

框架自带的IHttpActionResult类型有:OK,NotFound

如果希望对返回值有更多的控制,则使用原始的HttpResoponseMessage对象,如设置返回值的header

使用IHttpActionResult可以大大简化unit test,详情见 

https://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/unit-testing-with-aspnet-web-api 和 https://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api

参考链接

https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/action-results

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/ 

https://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api

猜你喜欢

转载自blog.csdn.net/xuefeiliuyuxiu/article/details/81430991