时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

在 ASP.NET Web API OData 中利用 Queryable API 进行验证

  • 2013-02-28
  • 本文字数:855 字

    阅读完需:约 3 分钟

ASP.NET Web API OData 中,可以利用 Queryable API 为特殊操作启用 OData 查询语法。如下所示:

[Queryable]
public IQueryable Get(int projectId)

然而,如果要向组织外部公开可查询的操作,可以利用查询验证添加一个保护层以保护我们的服务。微软的程序经理 Hongmei Ge 近日介绍了几种在 Queryable API 中添加验证的场景。

Hongmei 指出的第一个场景是,使用 AllowedQueryOptions 属性,只允许包含 $top 和 $skip 的查询。如下所示:

[Queryable(AllowedQueryOptions = AllowedQueryOptions.Skip | AllowedQueryOptions.Top)]
public IQueryable Get(int projectId)

还可以使用 MaxTop 和 MaxSkip 属性将 $top 和 $skip 的最大值限制在 100 和 200:

[Queryable(MaxTop = 100)]
public IQueryable Get(int projectId)

[Queryable(MaxSkip = 200)]
public IQueryable Get(int projectId)

利用 AllowedOrderByProperties,可以将结果按 Id 属性排序,因为按其他属性排序可能会很慢:

[Queryable(AllowedOrderByProperties = “Id”)]
public IQueryable Get(int projectId)

如果允许客户端在 $filter 内使用相等比较,应该使用 AllowedLogicalOperators 对其进行验证:

[Queryable(AllowedLogicalOperators = AllowedLogicalOperators.Equal)]
public IQueryable Get(int projectId)

将 AllowedArithmeticOperators 设置为 None,就可以关闭 $filter 中的算术操作:

[Queryable(AllowedArithmeticOperators = AllowedArithmeticOperators.None)]
public IQueryable Get(int projectId)

你还可以使用 AllowedFunctions 属性来限制 $filter 中的函数使用:

[Queryable(AllowedFunctions = AllowedFunctions.StartsWith)]
public IQueryable Get(int projectId)

上面的代码意味着只能在 $filter 中使用 StartsWith 函数。

Hongmei 还演示了高级场景中的查询验证,如为 $skip、$top、$orderby、$filter 自定义默认验证逻辑,以及使用 ODataQueryOptions 来验证查询。

查看英文原文 Applying Validation for Queryable API in ASP.NET Web API OData

2013-02-28 02:022407
用户头像

发布了 59 篇内容, 共 26.1 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

开源数据集成平台SeaTunnel:MySQL实时同步到es

javalover123

同步 数据同步 数据集成 CDC 实时

星辰天合公司产品完成阿里云PolarDB数据库产品生态集成认证

阿里云数据库开源

polarDB PolarDB-X PolarDB for PostgreSQL

华为云“盘古气象”登上Nature!

新消费日报

如何用大模型 Prompt 解决行业场景问题?大厂中文教程来了!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

前端开发需要了解的工具集合

树上有只程序猿

软件测试/测试开发丨Python常用数据结构-集合Set

测试人

Python 程序员 软件测试 测试开发

直播软件开发知识:实现感知网络质量功能

山东布谷科技

源码 软件 软件开发 直播 源码搭建

java面试题

程序员小张

C++中vector自定义大小方式

芯动大师

新兴技术诞生,国产操作系统崛起| 社区征文

芯动大师

操作系统 国产开源 年中技术盘点

企业利用bi商业智能工具有哪些改变呢?以瓴羊QuickBI为例

对不起该用户已成仙‖

Git教学

猫九

git 学习

机器学习洞察 | JAX,机器学习领域的“新面孔”

亚马逊云科技 (Amazon Web Services)

机器学习

KaiwuDB 亮相 2023 可信数据库发展大会

KaiwuDB

KaiwuDB 2023可信数据库发展大会

对线面试官-Redis(六 如何保证 Redis 高并发 主从复制原理)

派大星

Java 面试题

AWS云VS阿里云 横向对比

WuKongCoder

云计算 阿里云 AWS EMR

用Vue3编写一个简单的组件

互联网工科生

Vue 3 slots

Monibuca 中的内存复用

不卡科技

GC go语言 流媒体开发 内存池 Monibuca

文创商城项目实战

猫九

JavaScript 函数

猫九

不容错过的基础设施专场!今天4点,关于全场景质量协同平台T-One的介绍 | 第86-96期

OpenAnolis小助手

开源 基础设施 操作系统 龙蜥大讲堂 T-one

prometheus Histogram 统计原理

蓝胖子的编程梦

Grafana Prometheus #Grafana #Prometheus #监控

专利技术系列 001 | 鹏云网络分布式系统脑裂问题解决方案

鹏云网络

云计算 分布式系统 分布式存储 分布式系统脑裂 软件定义存储

华为云代码托管CodeArts Repo:保护企业核心代码资产安全

云计算 华为云 代码托管 华为开发者大会2023

软件测试 | 测试设计技巧—游戏类

测吧(北京)科技有限公司

测试

沙漠觅绿洲——华为HMS生态强势赋能伙伴成功掘金中东非

最新动态

es笔记五之term-level的查询操作

Hunter熊

elasticsearch

代码随想录训练营Day08 - 字符串(上)

jjn0703

华为云盘古气象大模型研究成果在《Nature》正刊发表

新消费日报

从php5.6到golang1.19-文库App性能跃迁之路

百度Geek说

golang App 百度文库

在ASP.NET Web API OData中利用Queryable API进行验证_语言 & 开发_Anand Narayanaswamy_InfoQ精选文章