前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤和搜索

使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤和搜索

作者头像
solenovex
发布2020-01-15 17:18:58
9020
发布2020-01-15 17:18:58
举报
文章被收录于专栏:草根专栏草根专栏

向Web API传递参数

数据可以通过多种方式来传给API。

Binding Source Attributes 会告诉 Model 的绑定引擎从哪里找到绑定源。

共有以下六种 Binding Source Attributes:

  • [FromBody]
    • 请求的 Body
  • [FromForm]
    • 请求的 Body 中的 form数据
  • [FromHeader]
    • 请求的 Header
  • [FromQuery]
    • Query string 参数
  • [FromRoute]
    • 当前请求中的路由数据
  • [FromService]
    • 作为 Action 参数而注入的服务

例如:

public async Task<ActionResult<CompanyDt0>> 
O references 
GetCompany( [FromRoute]Guid companyld)
public async Task<ActionResult<CompanyDt0>> O references GetCompany( [FromRoute]Guid companyld)

或:

public async Task<ActionResult<CompanyDt0>> 
O references 
GetCompany([FromQuery]Guid companyld)
public async Task<ActionResult<CompanyDt0>> O references GetCompany([FromQuery]Guid companyld)

默认情况下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&region=Europe

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

搜索

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

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

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

过滤 vs 搜索

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

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

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

但需要注意的是:

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 向Web API传递参数
  • 过滤
  • 搜索
  • 过滤 vs 搜索
    • 但需要注意的是:
    相关产品与服务
    Elasticsearch Service
    腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档