使用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] 

    • 通常用来推断IFormFileIFormFileCollection类型的Action参数。 

  • [FromRoute] 

    • 用来推断Action的参数名和路由模板中的参数名一致的情况。 

  • [FromQuery] 

     

    • 用来推断其它的Action参数。 

按照这些规则,在Action的参数前面使用这些属性,就可以避免让我们手动去寻找绑定源。当默认的行为规则需要被重写的时候,也可以使用这些 Binding Source Attributes。 

 

过滤

过滤集合的意思就是指根据条件限定返回的集合。 

例如我想返回所有类型为国有企业的欧洲公司。则URI为:GET /api/companies?type=State-owned&region=Europe 

所以过滤就是指:我们把某个字段的名字以及想要让该字段匹配的值一起传递给API,并将这些作为返回的集合的一部分。 

 

搜索 

针对集合进行搜索是指根据预定义的一些规则,把符合条件的数据添加到集合里面。 

搜索实际上超出了过滤的范围。针对搜索,通常不会把要匹配的字段名传递过去,通常会把要搜索的值传递给API,然后API自行决定应该对哪些字段来查找该值。经常会是全文搜索。 

例如:GET /api/companies?q=xxx 

 

过滤 vs 搜索 

可以看出来过滤和搜索是不同的。 

过滤:首先是一个完整的集合,然后根据条件把匹配/不匹配的数据项移除。 

搜索:首先是一个空的集合,然后根据条件把匹配/不匹配的数据项往里面添加。 

 

但需要注意的是: 

过滤和搜索这些参数并不是资源的一部分。 

只允许针对资源的字段进行过滤。 

该系列配套视频请点击原文链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

360浏览器linux版本_360安全浏览器崩溃解决方案

360安全浏览器崩溃解决方案方案一:打开360安全浏览器,按键盘上的F1调出浏览器医生界面,点击一键修复即可。如图所示:方案二:360浏览器打开了太多标签占用内存,并且随着浏览器开着的时间越长,占用…

.NET 开源软件开发BIM工具包xBIM

一、xBIM 简介BIM(Building Information Modelling)建筑信息模型,xBIM(eXtensible Building Information Modelling)可扩展的建筑信息模型。它是一个.NET 开源软件开发BIM工具包,支持BuildingSmart数据模型…

2019(dotNet全栈开发)公众号回顾

2019年已经过去,人口红利已经逐渐消失,也许这是这10年互联网史上最糟糕的一年,也可能这是未来10年互联网史上最好的一年关于公众号,我其实很早就开始注册了,只是一直没怎么运营(ps:不知道怎么推…

CSS padding margin border属性讲解

把所有网页上的对象都放在一个盒(box)中 ,设计师可以通过创建定义来控制这个盒的属性,这些对象包括段落、列表、标题、图片以及层。 盒模型主要定义四个区域: 内容(content) 内边距(…

【实战 Ids4】║ 客户端、服务端、授权中心全线打通!

1、经过元旦两天的全力整改,终于在这新的一年,完成了我的布道生涯的第一个大步走 —— 那就是客户端(VUE)、服务端(ASP.NET Core API)、授权中心(IdentityServer4)的大融合&#xff…

补丁 检测系统_大云制造 | BCLinux For ARM64 V7.6操作系统正式发布

友情提示:全文3000多文字,预计阅读时间10分钟概述大云企业操作系统(BC-Linux,BigCloud Enterprise Linux)是中移(苏州)软件技术有限公司借助开源社区优势,通过定制化手段研发的高性能、安全可靠、自主可控的企业级Linux操作系统。…

告别2019,写给2020:干好技术,要把握好时光里的每一步

本文来自:长沙.NET技术社区 邹溪源不知不觉,一晃年关将近,即将翻开2019,进入新的一页。(本文写于2019年12月27日)这周已经在朋友圈看到了来自公众号《恰同学少年》《Edi.Wang》和《吃草的罗汉》几位老师写下…

单片机课程设计数字心率计_如何选购合适的PH计

聚舟供应的PH计PH计已经被广泛应用于各个行业,如工业、电力、农业、医药、食品、科研和环保等领域,在酸碱值检测时必不可少的,那么该如何选购呢?聚舟销售的PH计也有多种样式与型号,各种型号都供应充足,欢迎…

cd返回上一 git_如何使用Git实现自动化部署你的项目

在开发过程中,我们不可避免的会用到版本控制。你可能对 Git 和 SVN 有所了解。一开始基本都是在用SVN,现在可能都进化到用Git了吧,因为SVN缺点比较多。这里就不过于多的介绍Git的优点了。不知道大家一开始是怎么使用 git 进行开发的&#xff…

在Asp.Net Core中使用ModelConvention实现全局过滤器隔离

从何说起这来自于我把项目迁移到Asp.Net Core的过程中碰到一个问题。在一个web程序中同时包含了MVC和WebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器IActionFilter,常规做法一般是写好过滤器后给需要的控制器挂上这个标签,高级点的做…

2 未匹配到任何借口_拼多多【关键词精确匹配溢价】给你想要的精准流量,让你订单暴增的秘诀...

关键词匹配方式升级啦,开启精确匹配溢价功能,拥有更多精准流量。为帮助商家解决在使用多多搜索时,遇到的关键词流量不精准、流量不可控、点击率低的问题,多多搜索新推出【关键词精确匹配溢价】功能。通过精确匹配溢价功能&#xf…

如何运用领域驱动设计 - 领域服务

概述本文将介绍领域驱动设计(DDD)战术模式中另一个非常重要的概念 - 领域服务。在前面两篇博文中,我们已经学习到了什么是值对象和实体,并且能够比较清晰的定位它们自身的行为。但是在某些时候,你会发现某一些业务行为…

指令打印与驱动打印随笔

本文对指令打印和驱动打印做了一个简要的介绍,分享了在开发客户端打印组件时的一些过程并提出了一个新轮子用于解决老的问题并引出更多的新问题。全文大概 3500 字无图,阅读大概需要 7 分钟。驱动打印是指:使用 PrintDocument 进行打印。通过…

er图转为数据流程图_「数据架构」实体关系模型介绍

实体-关系模型(或ER模型)描述特定知识领域中相关的事物。基本的ER模型由实体类型(对感兴趣的事物进行分类)和指定实体之间可能存在的关系(那些实体类型的实例)组成。在软件工程中,为了执行业务流程,ER模型通常用于表示业务需要记住的内容。因此&#xff…

WeihanLi.Npoi 1.7.0 更新介绍

WeihanLi.Npoi 1.7.0 更新介绍Intro昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ ColumnOutputFormatter,又进一步增强了导入导出的灵活性,来看下面的示例ColumnInputFormatter/ColumnOutputFormatter示例 Model:i…

【复杂系统迁移 .NET Core平台系列】之迁移项目工程

源宝导读:微软跨平台技术框架—.NET Core已经日趋成熟,已经具备了支撑大型系统稳定运行的条件。本文将介绍明源云ERP平台从.NET Framework向.NET Core迁移过程中的实践经验。一、背景随着ERP的产品线越来越多,业务关联也日益复杂,…

分析股票大数据_Python大数据分析量学祖师爷网站数据

本文通过Python抓取股海明灯涨停预报数据进行分析,股海明灯网站涨停预报数据跟踪功能是需要VIP权限,但这个权限分析数据的功能有限,我们抓取数据后丰富相关功能。一、点击涨停预报后打开以下页面。通过python程序将数据抓取到后台数据库&…

【复杂系统迁移 .NET Core平台系列】之界面层

源宝导读:微软跨平台技术框架—.NET Core已经日趋成熟,已经具备了支撑大型系统稳定运行的条件。本文将介绍明源云ERP平台从.NET Framework向.NET Core迁移过程中的实践经验。一、背景随着ERP的产品线越来越多,业务关联也日益复杂,…

.NET Core MVC扩展实践

源宝导读:明源云ERP的底层架构正在向.Net Core跨平台迁移,我们在过程中遇到了部分不兼容的问题。本文将介绍技术团队如何解决.Net Core与已有MVC框架不兼容问题的解决方案。一、背景云ERP的建模平台是基于.NET Framework构建的,在向.NET Core…

matlab title多个标题_MATLAB中的直方图处理及均衡化

直方图是多种空间域处理技术的基础。仿图操作能有效地用于图像增强,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。訪图在软件中易于计算,也适用于商用硬件设备,因此直方图成为实时图像处理的一个流行工…