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

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

关注

评论

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

Super Speed vs. Wireless: A detailed comparison of QCN9274 and QCA9880 wireless network card chips

wallysSK

国企财务管控模式的创新思路

智达方通

国企 国有企业 财务管控 国企财务管控

小红书笔记详情数据接口(smallredbook.item_get_video)丨小红书API接口

tbapi

小红书笔记详情接口 小红书API接口

重磅发布《政务数据云发展与应用白皮书(2023)》(附下载)

信通院IOMM数字化转型团队

政务 政务数据安全 ICT深度观察 政务数据云

展望2024: 中国AI算力能否引爆高性能计算和大模型训练的新革命?

GPU算力

在 Walrus 上轻松集成 OpenTofu

SEAL安全

开源 IaC Walrus OpenTofu

Spring 应用合并之路(二):峰回路转,柳暗花明 | 京东云技术团队

京东科技开发者

速卖通商品列表数据接口(aliexpress.item_search)丨速卖通API接口

tbapi

速卖通API接口 速卖通商品数据接口 速卖通商品列表数据接口 关键词搜索速卖通商品接口

工业 4.0 和数字孪生

3D建模设计

智慧城市 智慧园区 3D场景建模 3D数字孪生场景编辑器

3D 纹理的综合指南

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图

K-最近邻算法(KNN)是什么法?

小齐写代码

嘘!马斯克的话别全信

ZA技术社区

云服务 科技

如何推动智能制造 - 数字孪生示例

3D建模设计

智慧城市 智慧园区 3D场景建模 3D数字孪生场景编辑器

《2023央国企数字化产业赋能图谱》正式发布!(内附下载)

信通院IOMM数字化转型团队

ICT深度观察 央国企数字化转型 央国企数字化产业赋能图谱

零代码集成自动化的实现逻辑是什么?

谷云科技RestCloud

零代码 APPlink

文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题

福大大架构师每日一题

福大大架构师每日一题

流式湖仓增强,Hologres + Flink构建企业级实时数仓

阿里云大数据AI技术

Solidity之旅十七-库 [library]

BSN研习社

实践零信任(Zero Trust):步骤详解

Apifox

程序员 安全 API 接口安全 零信任

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