最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

关注

评论

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

智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人

汀丶人工智能

人工智能 深度学习 智能机器人

JavaScript 的 structuredClone:深拷贝技术全解析

Liam

JavaScript 前端 Web 前端开发 structuredClone

数据闭环构建技巧:确保模型稳定性与数据质量

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

测试

自学习的现实应用:构建智能系统的新思路

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

测试

Spark技巧大揭秘:构建分布式造数工具加速工作效率

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

测试

龙智联合Atlassian举办DevSecOps研讨会,Jama总监分享Jama与Jira集成经验,助力产品开发复杂性管理

龙智—DevSecOps解决方案

Jira jama

聚道云软件连接器2月新增应用/产品更新合集

聚道云软件连接器

功能更新

实时数据驱动:API商品数据接口引领业务飞跃

Noah

DevChat上新:/commit让你躺平都能写好规范的提交消息

思码逸研发效能

从历史视角看人工智能:专家系统、机器学习与深度学习

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

测试

一文了解Lint工具的优缺点,以及它与高级静态分析工具的比较

龙智—DevSecOps解决方案

linter lint

面试官上来就让手撕HashMap的7种遍历方式,当场愣住,最后只写出了3种

不在线第一只蜗牛

Python 程序员 面试 开发语言

人工智能发展史:从专家系统到机器学习的演进

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

测试

训练集、验证集和测试集:区别与应用详解

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

测试

TikTok直播:是否需要专线,以及加速的方法有哪些?

Ogcloud

海外直播专线 Tik Tok直播 Tik Tok直播网络 直播加速 海外直播

少走弯路 不踩坑 Datadog 的替代品来了

可观测技术

可观测性

防水堡是什么?各行各业怎么定义?

行云管家

网络安全 防水堡 行云防水堡

数据与特征:解密模型解决实际问题的关键

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

测试

评估模型效果:深入解读混淆矩阵、精准率、召回率和F1 score

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

测试

编程中有哪些好的习惯一开始就值得坚持?

小齐写代码

云游戏:畅享3A游戏大作的全新时代

Ogcloud

游戏 云游戏 3A游戏 3A云游戏

Spark在分布式造数工具中的应用探索

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

测试

如何选择合适的数据提升模型性能

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

测试

数据挑选技巧:提升模型质量的关键一步

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

测试

自学习概念探析:构建稳定模型的核心思想

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

测试

数据闭环的建立:确保模型发展的可持续性

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

测试

思码逸获得 InfoQ 2023 年度技术生态构建奖

思码逸研发效能

深入理解训练集、验证集和测试集在模型训练中的作用

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

测试

微店商品详情 API 的调用频率有限制吗?

技术冰糖葫芦

API 文档

产品更新 | 思码逸 DevInsight,新增虚拟项目团队的管理与度量

思码逸研发效能

坐标 DISTRIBUTECH,TDengine 发力海外电力行业

TDengine

tdengine 时序数据库

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