写点什么

在 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:022354
用户头像

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

关注

评论

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

探究MyBatis动态SQL的奥秘

代码忍者

会议室LED显示屏与常规显示屏的区别

Dylan

会议室 LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家

浏览器书签管理工具BookMacster for Mac激活版

小玖_苹果Mac软件

《CPython Internals》阅读笔记:p1-p19

codists

时序数据库TDengine 签约智园数字,助力化工园区智联未来

TDengine

数据库 tdengine 时序数据库

Lightroom Classic 2025 for Mac中文激活版

小玖_苹果Mac软件

淘宝天猫API接口深度解析:如何高效利用关键词搜索商品列表

代码忍者

视频编辑软件Premiere Pro 2024 for Mac中文激活版

小玖_苹果Mac软件

图像检查处理软件Graphic Inspector for Mac激活版

小玖_苹果Mac软件

公益组织需要过等保吗?过几级?

行云管家

网络安全 等保 公益 等级保护 等保测评

AI技术在英语阅读材料生成的应用

北京木奇移动技术有限公司

英语学习 AI教育 软件外包公司

云服务器Flexus X实例:部署Gitea,拥有自己的Git仓库,管理本地代码

轶天下事

云服务器Flexus X实例:轻量级http服务器Tinyhttpd部署

轶天下事

淘宝商品详情数据获取API:深度技术解析与专业指南

代码忍者

电机行业MES系统解决方案

万界星空科技

mes 万界星空科技mes 制造业工厂 电机行业 电机MES

右键助手专业版Mouseboost Pro for mac激活版

小玖_苹果Mac软件

AIP智能体平台:打造开源协同与智能的新纪元

大东(AIP智能体运营专员)

人工智能

在iPhone / iPad上轻松模拟GPS位置AnyGo for Mac激活版

小玖_苹果Mac软件

用火语言RPA生成EXE界面应用客户端程序

火语言RPA

KubeEdge研讨会圆满举办,产学研共迎未来繁荣生态

华为云原生团队

云计算 容器 云原生 边缘计算

多层级、全方位、立体化的车联网信息安全体系

芯盾时代

车联网 物联网 数据安全 智能汽车

AI技术开发虚拟老师

北京木奇移动技术有限公司

英语学习 AI教育 软件外包公司

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