在.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中接口参数的模型绑定的理解相关推荐

  1. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    园子里关于ASP.NET Core Web API的教程很多,但大多都是使用EF+Mysql或者EF+MSSQL的文章.甚至关于ASP.NET Core Web API中使用Dapper+Mysql组 ...

  2. ASP.NET Core Web API中使用Swagger

    本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger   在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...

  3. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  4. ASP.NET Web API中的参数绑定总结

    ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...

  5. ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

    在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...

  6. NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

    咨询区 JDawg: 我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示: HttpR ...

  7. Asp.Net Core Web Api的简单实例

    文章目录 WebApi 第一个Asp.NetCoreWebApi程序 传入的参数 返回的返回值 WebApi和EF Core的联用 总结 WebApi Web API是网络应用程序接口.包含了广泛的功 ...

  8. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

  9. core webapi缩略图_在ASP.NET Core Web API 项目里无法访问(wwwroot)下的文件

    新建 ASP.NET Core Web API 项目 -- RESTFul 风格 Hello World! 一.创建一个空项目 请查看 新建 .NET Core 项目 -- Hello World!  ...

最新文章

  1. 我是如何用Worktile进行敏捷开发的
  2. Linux如何在线修改hostname
  3. DotText源码阅读(7) --Pingback/TrackBack
  4. SQL SERVER 查询表的行数
  5. ajax利用FormData、FileReader实现多文件上传php获取
  6. jquery实现:返回顶部(动画·代码精简版)- 代码篇
  7. OpenCV3学习(11.3)关键点的描述符KeyPoint对象与匹配类DMatch
  8. java 序列化 写入mysql_java 序列化到mysql数据库中
  9. 优化器:torch.optim
  10. 创业者都认为经营一家新公司最主要的目标是融资
  11. linux 网卡bond
  12. iOS 动画篇 - pop动画库
  13. centos搭建samba服务
  14. 因子分析法之因子旋转
  15. CruiseControl.Net 与 Gendarme 集成
  16. 小胡学python【1】
  17. 简单的手机html页面源代码,手机页面h5的简单demo
  18. 开源 Python IDE PyScripter设置中文界面
  19. ajax 传递对象 返回状态500
  20. java读取文件夹下所有文件并替换文件每一行中指定的字符串

热门文章

  1. IT兄弟连 JavaWeb教程 AJAX定义以及解决的问题
  2. “数据门”事件频发 如何避免人为因素导致数据泄露?
  3. jqGrid('setSelection',rowid)报Cannot read property 'multiple' of undefined
  4. 虚拟DOM Diff算法解析
  5. java提示找不到或无法加载主类
  6. mvc 返回一个对象 到视图接收
  7. 【1】淘宝sdk装修入门引言
  8. 使用AXIS开发Web Service的示例
  9. 如何使用ASP.NET Core Web API实现短链接服务
  10. Redis常用概念简介