使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤和搜索
向Web API传递参数
数据可以通过多种方式来传给API。
Binding Source Attributes 会告诉 Model 的绑定引擎从哪里找到绑定源。
共有以下六种 Binding Source Attributes:
[FromBody]
请求的 Body
[FromForm]
请求的 Body 中的 form数据
[FromHeader]
请求的 Header
[FromQuery]
Query string 参数
[FromRoute]
当前请求中的路由数据
[FromService]
作为 Action 参数而注入的服务
例如:
或:
默认情况下ASP.NET Core 会使用 Complex Object Model Binder,它会把数据从Value Providers那里提取出来,而Value Providers的顺序是定义好的。
但是我们构建API时通常会使用 [ApiController] 这个属性,为了更好的适应API它改变了上面的规则。更改后的规则如下:
[FromBody]
通常是用来推断复杂类型参数的。
[FromForm]
通常用来推断IFormFile和IFormFileCollection类型的Action参数。
[FromRoute]
用来推断Action的参数名和路由模板中的参数名一致的情况。
[FromQuery]
用来推断其它的Action参数。
按照这些规则,在Action的参数前面使用这些属性,就可以避免让我们手动去寻找绑定源。当默认的行为规则需要被重写的时候,也可以使用这些 Binding Source Attributes。
过滤
过滤集合的意思就是指根据条件限定返回的集合。
例如我想返回所有类型为国有企业的欧洲公司。则URI为:GET /api/companies?type=State-owned®ion=Europe
所以过滤就是指:我们把某个字段的名字以及想要让该字段匹配的值一起传递给API,并将这些作为返回的集合的一部分。
搜索
针对集合进行搜索是指根据预定义的一些规则,把符合条件的数据添加到集合里面。
搜索实际上超出了过滤的范围。针对搜索,通常不会把要匹配的字段名传递过去,通常会把要搜索的值传递给API,然后API自行决定应该对哪些字段来查找该值。经常会是全文搜索。
例如:GET /api/companies?q=xxx
过滤 vs 搜索
可以看出来过滤和搜索是不同的。
过滤:首先是一个完整的集合,然后根据条件把匹配/不匹配的数据项移除。
搜索:首先是一个空的集合,然后根据条件把匹配/不匹配的数据项往里面添加。
但需要注意的是:
过滤和搜索这些参数并不是资源的一部分。
只允许针对资源的字段进行过滤。
该系列配套视频请点击原文链接。
使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤和搜索相关推荐
- 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API
1. 使用ASP.NET Core 3.x 构建 RESTful API - 1.准备工作 什么是REST REST一词最早是在2000年,由Roy Fielding在他的博士论文<Archit ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 1. 开始
以前写过ASP.NET Core 2.x的REST API文章,今年再更新一下到3.0版本. 预备知识:ASP.NET Core 和 C# 工具:Visual Studio 2019最新版(VSCod ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.4 内容协商
现在,当谈论起 RESTful Web API 的时候,人们总会想到 JSON.但是实际上,JSON 和 RESTful API 没有半毛钱关系,只不过 JSON 恰好是RESTful API 结果的 ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.1 API资源命名
为了与RESTful API进行交互,API消费者需要使用到三个概念: 资源的标识.也就是可以找到资源的URI. HTTP方法.例如GET,POST等等,这些方法是HTTP协议的一部分. 有效载荷(可 ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.3.3 ProblemDetails
当ASP.NET Core 大约在 2.1 版本的时候,它引入了 ProblemDetails.ProblemDetails是基于 RFC7807 这个规范,目的是让 HTTP 响应可以携带错误的详细 ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.2 路由
路由机制会把一个请求的URI映射到一个Controller上面的Action,所以当你发送一个HTTP请求的时候,MVC框架会解析这个请求的URI,并尝试着把它映射到一个Controller上面的Ac ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.2 开始建立Controller和Action
Demo 下面我们就来实践一下.打开之前的项目,并建立CompaniesController: 这里有6个地方比较关键,我们挨个看一下: RESTful API 或者其它Web API的Control ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model
Entity Framework Core 使用的 Entity Model 是用来表示数据库里面的记录的. 而面向外部的 model 则表示了要传输的东西.这类 model 有时候叫做 Dto,有时 ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 4.3 HTTP 方法的安全性和幂等性
什么样的HTTP方法是安全的? 如果一个方法不会改变资源的表述,那么这个方法就被认为是安全的. 例如 HTTP GET 和 HTTP HEAD 就被认为是安全的,但需要注意的是,这并不意味着执行GET ...
最新文章
- sql Escape用法
- ACE反应器(Reactor)模式
- sessionkey 微信小程序获取_微信小程序获取sessionkey,Connection reset
- 排序类.不管什么类型都能排
- Sudoku Solver
- 常见电脑病毒及解决措施
- 【设计鉴赏】超美的墨汁喷溅字体
- 服务器lsass系统错误,急急急开机出现lsass.exe系统错误系统资源不够无法完成AP? 爱问知识人...
- 纯CSS下拉导航代码
- 启用视口着色:在视图窗口实时显示灯光照明效果_daiding
- Nacos安装讲解教程
- 2017最新淘宝高转化详情页排版技巧(转载)
- 华为路由器接口如何区分_华为路由器的usb接口是什么意思
- G - 数字转换 LibreOJ - 10155
- Web中的HTML、css、jQuery、js
- HTTP引流工具Gor快速入门
- 打开APPStore跳转到指定APP
- 如何除去暴风影音的左上边广告和下角动态广告
- 全球10大智慧港口介绍
- ECU-TEST笔记使用技巧01
热门文章
- C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并
- linkButton与Button 的click事件与onclientClick事件
- 什么叫内部银团_什么是紫钛晶?紫钛晶是不是天然水晶?
- centos 初学者_初学者:如何在Outlook 2013中创建和管理任务
- javascriptjquery 判断滚动到页面底部
- Python统计列表中的重复项出现的次数的方法
- java dateTime + long
- MySQL查询,按拼音首字母排序
- kernel shell bash简介
- crontab执行shell脚本日志中出现乱码