Web Api 模型绑定 二
[https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2]
1.ApiController属性使模型验证错误自动触发HTTP400响应。因此,不需要进行ModelState.IsValid验证。若要禁用400行为,需要将SuppressModelStateInvalidFilter属性设置为true。
>>> services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.ConfigureApiBehaviorOptions(options=>{
options.SuppressModelStateInvalidFilter=true;
});
2.如果没有ApiController属性或诸如[FromQuery]的绑定源属性,Asp.Net Core运行时会尝试使用复杂对象模型绑定器。复杂对象模型绑定器按已定义顺序从值提供程序拉取数据。
ApiController属性将推理规则应用于操作参数的默认数据源。借助这些规则,无需通过将属性应用于操作参数来手动识别绑定源。
[FromBody]针对复杂类型参数进行推断。但其不适用于具有特殊含义的任何复杂的内置类型,如IFormCollection和CancellationToken。
[FromForm]针对IFormFile和IFormFileCollection类型的操作参数进行推断。
[FromRoute]针对与路由模板中的参数相匹配的任何操作参数名称进行推断。
[FromQuery]针对任何其他操作参数进行推断。
若要禁用绑定源推理,需要将SuppressInferBindingSourcesForParameters设置为true。
>>> services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.ConfigureApiBehaviorOptions(options=>{
options.SuppressInferBindingSourcesForParameters=true;
});
[注]在asp.net core2.1中,集合类型参数(如列表和数组)被不正确地推断为FromQuery。若要从请求正文中绑定参数,应对这些参数使用FromBody属性。此行为在asp.net care2.2或更高版本中得到
更正,其中集合类型被推断为从正文中绑定。
Web Api 模型绑定 二的更多相关文章
- Web Api 模型绑定 一
[https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2]1.模型绑定 简单模型绑定针对简单类型(如stri ...
- Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
导航 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文主要来讲解以下内容: ...
- Parameter Binding in ASP.NET Web API(参数绑定)
Parameter Binding in ASP.NET Web API(参数绑定) 导航 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnbl ...
- 细说 Web API参数绑定和模型绑定
今天跟大家分享下在Asp.NET Web API中Controller是如何解析从客户端传递过来的数据,然后赋值给Controller的参数的,也就是参数绑定和模型绑定. Web API参数绑定就是简 ...
- Web API(四):Web API参数绑定
在这篇文章中,我们将学习Web API如何将HTTP请求数据绑定到一个操作方法的参数中. 操作方法在Web API控制器中可以有一个或多个不同类型的参数.它可以是基本数据类型或复杂类型.Web API ...
- WEB API 系列(二) Filter的使用以及执行顺序
在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...
- ASP.NET Web API 2系列(二):灵活多样的路由配置
1. 导言 路由系统是请求消息进入ASP.NET Web API消息处理管道的第一道屏障,其根本目的在于利用注册的路由对请求的URL进行解析以确定目标HTTPController和Action的名称, ...
- Web API系列(二) Filter的使用以及执行顺序
在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...
- ASP.NET Web API模型验证以及异常处理方式
ASP.NET Web API的模型验证与ASP.NET MVC一样,都使用System.ComponentModel.DataAnnotations. 具体来说,比如有:[Required(Erro ...
随机推荐
- Cygwin添加右键菜单
修改注册表 统一的方式,添加一个右键命令 找到HKEY_CLASSES_ROOT\Directory\Background\shell 右键,新建项.名字随便起 再次右键,新建项.命名command ...
- gitlab设置项目组成员权限
你敢相信这是个码农? setting菜单的“Members”功能页: 该页面展示了当前Project的成员列表,以及每个成员对应的权限角色,Owner/Master/Developer 注意到该页面顶 ...
- 从server.xml看Tomcat容器的层次结构
先来看一下server.xml的结构: <Server> <Listener/> <GlobalNamingResources> <Resourc ...
- 5个 JS 解构有趣的用途
摘要: 玩转ES6解构赋值. 原文:5个 JS 解构有趣的用途 译者:前端小智 1. 交换变量 通常交换两个变量的方法需要一个额外的临时变量,来看看例子: let a = 1; let b = 2; ...
- Ubuntu18.04安装Cuda10.1
注:如果使用anaconda,貌似不需要手动安装Cuda和cudnn,安装tensorflow时会自动安装 1.官方教程https://docs.nvidia.com/cuda/cuda-instal ...
- Python—实现ssh客户端(连接远程服务器)
paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作,值得一 ...
- Linxu:磁盘分区
了解磁盘分区 磁盘的物理组成: 圆形的磁盘盘(主要记录数据的部分): 机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据): 主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据. ...
- 第十二周Scrum会议
本次照片 总结上周所达成的工作 做到的工作 1. 将前端页面进行了比较美观的美化 2. 实现了后台的代码的整合,同时将flask项目的整体框架搭建完成 3. 进行了数据库的建表等一些工作 遇到的难点 ...
- LG2495 「SDOI2011」消耗战 虚树
问题描述 LG2495 题解 虚树 \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; #define int l ...
- luoguP5283 [十二省联考2019]异或粽子
题意 类似超级钢琴,找最优解用可持久化trie. code: #include<bits/stdc++.h> using namespace std; #define re registe ...