2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

Llama 4 即将发布,引入语音能力;AI 智能运动眼镜 BleeqUp:实时对讲、AI 自动成片等功能丨日报

声网

BOE(京东方)珠海晶芯COB量产交付仪式举办 赋能MLED产业新发展

爱极客侠

如何选择经销商管理系统:8款产品对比

易成研发中心

经销商管理 经销商管理平台 经销商管理系统

Go 语言常见错误——字符串

FunTester

DeepSeek将驱动AGI突破?深度解读昇腾云AI应用实践

华为云开发者联盟

人工智能 大模型 AGI 昇腾云 DeepSeek

市场业务团队主流使用的 14款项目管理软件推荐

易成研发中心

项目管理 项目管理软件 项目管理系统

人工智能与机器人:打造未来工业的超级工厂

天津汇柏科技有限公司

人工智能 AI

海内外EHR软件大盘点,16款人力资源工具解析

易成研发中心

人力资源管理软件

征程 6 工具链 BEVPoolV2 算子使用教程 【2】-BEVPoolV2 QAT 链路实现示例

地平线开发者

自动驾驶; 算法工具链 地平线征程6

如何进行项目的全生命周期管理

易成研发中心

项目管理

NineData 社区版正式上线,支持一键本地化部署!

NineData

DevOps 一键安装 NineData NineData社区版 单机部署

什么是客户关系管理系统?全面指南

易成研发中心

百度百舸万卡集群的训练稳定性系统设计和实践

Baidu AICLOUD

恢复 容错 GPU 集群 集群稳定性

NPU上运行onnxruntime

zjun

推理 ONNX Ascend

线下活动:与宇树 G1 机器人零距离,具身智能畅谈体验会丨社区来稿

声网

工具选型宝典:18款顶尖bug管理系统详解

易成研发中心

绩效管理系统推荐:2024企业常用14款工具横评

易成研发中心

绩效管理系统

公司共享网盘怎么建立

易成研发中心

企业网盘

罗永浩的AI新战场

趣解商业

创业 AI 罗永浩

好用的文件共享软件有哪些?比较大家常用的11款

易成研发中心

文件共享 企业网盘 在线共享文件

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