.NET Core WEB API中接口参数的模型绑定的理解
在.NET Core WEB API中参数的模型绑定方式有以下表格中的几种:
微软官方文档说明地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.1
特性 | 绑定源 |
[FromHeader] | 请求标头 |
[FromQuery] | 请求查询字符串参数 |
[FromForm] | 请求正文中的表单数据 |
[FromBody] | 请求正文 |
[FromRoute] | 当前请求中的路由 |
[FromServices] | 作为操作参数插入的请求服务 |
接下来将对其中一些特性在实际中的使用方式做出简要说明。首先要新建一个ASP .NET Core WEB API的工程。
顾名思义就是从Http的Request Headers:中获取数据。使用示例代码如下:
使用https用Url的方式请求访问,方法返回的结果为空,如下图所示。并且此时的Request Headers中并没有headerParam参数。
使用Postman给方法的Request Headers加入 headerParam:10。此时方法返回了结果,如下图所示。
console日志详情如下图:
通过以上测试可以发现,使用参数使用[FromHeader]特性时,没有给参数赋值时,参数使用的是.NET中类型的默认值,也就是Default(T)。
对于复杂类型的参数请求,也就是参数类型为对象时,MVC中间件会默认以把数据转换为JSON格式。对于Get请求如果想要用URL查询字符串查询数据。就得在参数前面加[FromQuery]特性,使用示例代码如下:
使用Postman请求结果如下如下:
如果去掉[FromQuery]特性请求数据,就会提示415错误,如下图所示:
对[FromQuery]的请求方式做出总结:
1.如果使用了[FromQuery]特性,必须使用请求查询字符串作为参数,用JSON格式的数据请求则会报415错误。
2.如果去掉[FromQuery]特性,则必须使用JSON格式的数据请求,用请求从查询字符串作为参数则会报415错误。
[FromForm]特性请求标头中的Content-Type为form表单形式:Content-Type:"application/x-www-form-urlencoded",示例代码如下:
Postman的请求结果如下:
使用[FromBody]特性,MVC中间件会把请求参数默认转换为JSON格式。所以请求是必须使用JSON格式的数据。示例代码如下:
Postman的请求方式如下图:
返回结果如下图:
既然MVC中间件默认[FromBody]的参数请求为JSON格式,那可不可以使用XML格式的参数作为请求数据:
1.安装NuGet包:Install-Package Microsoft.AspNetCore.Mvc.Formatters.Xml
2.在Startup.cs的ConfigureServices方法中添加如下图所示的方法AddXmlSerializerFormatters:
3.使用Postman的请求方式如下:
返回结果如下图所示:
给Request Headers的请求头加上 Accept: "text/xml" 可以指定返回的数据为xml格式,Postman的请求方式如下:
Postman的返回结果如下图所示,通过下图查看返回了xml的数据。
以上就是个人对请求参数特性的总结。
原文地址:https://www.cnblogs.com/fengye310/p/10541468.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
.NET Core WEB API中接口参数的模型绑定的理解相关推荐
- [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
园子里关于ASP.NET Core Web API的教程很多,但大多都是使用EF+Mysql或者EF+MSSQL的文章.甚至关于ASP.NET Core Web API中使用Dapper+Mysql组 ...
- ASP.NET Core Web API中使用Swagger
本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger 在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...
- 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...
- ASP.NET Web API中的参数绑定总结
ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...
- NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?
咨询区 JDawg: 我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示: HttpR ...
- Asp.Net Core Web Api的简单实例
文章目录 WebApi 第一个Asp.NetCoreWebApi程序 传入的参数 返回的返回值 WebApi和EF Core的联用 总结 WebApi Web API是网络应用程序接口.包含了广泛的功 ...
- 在ASP.NET Core Web API上使用Swagger提供API文档
我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...
- core webapi缩略图_在ASP.NET Core Web API 项目里无法访问(wwwroot)下的文件
新建 ASP.NET Core Web API 项目 -- RESTFul 风格 Hello World! 一.创建一个空项目 请查看 新建 .NET Core 项目 -- Hello World! ...
最新文章
- 我是如何用Worktile进行敏捷开发的
- Linux如何在线修改hostname
- DotText源码阅读(7) --Pingback/TrackBack
- SQL SERVER 查询表的行数
- ajax利用FormData、FileReader实现多文件上传php获取
- jquery实现:返回顶部(动画·代码精简版)- 代码篇
- OpenCV3学习(11.3)关键点的描述符KeyPoint对象与匹配类DMatch
- java 序列化 写入mysql_java 序列化到mysql数据库中
- 优化器:torch.optim
- 创业者都认为经营一家新公司最主要的目标是融资
- linux 网卡bond
- iOS 动画篇 - pop动画库
- centos搭建samba服务
- 因子分析法之因子旋转
- CruiseControl.Net 与 Gendarme 集成
- 小胡学python【1】
- 简单的手机html页面源代码,手机页面h5的简单demo
- 开源 Python IDE PyScripter设置中文界面
- ajax 传递对象 返回状态500
- java读取文件夹下所有文件并替换文件每一行中指定的字符串
热门文章
- IT兄弟连 JavaWeb教程 AJAX定义以及解决的问题
- “数据门”事件频发 如何避免人为因素导致数据泄露?
- jqGrid('setSelection',rowid)报Cannot read property 'multiple' of undefined
- 虚拟DOM Diff算法解析
- java提示找不到或无法加载主类
- mvc 返回一个对象 到视图接收
- 【1】淘宝sdk装修入门引言
- 使用AXIS开发Web Service的示例
- 如何使用ASP.NET Core Web API实现短链接服务
- Redis常用概念简介