写点什么

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

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

关注

评论

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

云电脑到底是不是自己的电脑?

青椒云云电脑

云电脑

如何使用极狐GitLab 支持 ISO 27001 合规

极狐GitLab

DevOps gitlab ISO 组织控制 技术控制

Serverless 数仓技术与挑战 - 张雁飞|3306π

Databend

一文读懂GPU虚拟化、显卡直通和GPU云桌面

青椒云云电脑

桌面云 云桌面

出海第一步,先选云服务

出海的猹

出海服务商 海外市场 出海企业 云服务商

XR扩展现实的最新趋势-云流化技术

3DCAT实时渲染

云流化 CLOUDXR

极狐GitLab CI x Vault,做好企业密钥安全合规管理

极狐GitLab

gitlab cicd 安全 cli vault

移动云桌面,随时随地交付桌面系统!

青椒云云电脑

云桌面

最高提升10倍性能!揭秘火山引擎ByteHouse查询优化器实现方案

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号9月PK榜

关于TPM营销费用管理,品牌快消企业最关心的问题都在这里

赛博威科技

营销数字化 投资分析 数字营销 营销管理 预算管理信息化

电脑宕机耽误工作?云桌面办公上云更高效

青椒云云电脑

云桌面

技术科普:汽车开放系统架构AUTOSAR

DevOps和数字孪生

汽车 AUTOSAR

平台工程实践,让应用开发如搭积木一般简单

北京好雨科技有限公司

Kubernetes DevOps 平台工程

科兴未来 | 2023苏州宿迁“1+5”共建园区创新创业大赛

科兴未来News

克服差异:出海企业产品推广迈出第一步的关键考虑因素

出海的猹

营销 产品增长 用户 运营 出海企业

GPU云还是传统图形工作站?测绘单位的探索和创新

青椒云云电脑

图形工作站

iPhone15系列发布,正式宣布对AV1的硬解支持

微帧Visionular

视频编解码

快速加入Health Kit,一文了解审核流程

HarmonyOS SDK

huawei HarmonyOS

云桌面是什么?看完这篇你就明白了

青椒云云电脑

桌面云 云桌面

为什么企业需要视频会议私有部署?

BeeWorks

如何构建现代化数据平台?私有云五大方面赋能企业用户

青椒云云电脑

云平台 云平台技术

精打细算:出海企业如何选择低成本高效率的产品推广渠道

出海的猹

营销 出海社交 产品增长 出海企业

Apache IoTDB 毕业三周年!纪念T恤+表情包免费来袭~

Apache IoTDB

企业选择云桌面系统的主要原因是什么?

青椒云云电脑

云桌面 云桌面厂家

IT企业数据安全如何保障?部署私有云就够了

青椒云云电脑

私有云 云桌面

一文读懂GPU直通技术

青椒云云电脑

gpu

GPU云桌面如何赋能3D图形制作场景

青椒云云电脑

桌面云 云桌面

恭喜!龙蜥获得 2023 大学生操作系统设计赛二等奖及特殊贡献奖

OpenAnolis小助手

开源 操作系统 龙蜥社区 获奖 全国大学生系统能力大赛

出海项目冷启动攻略:如何利用一个标签实现产品推广增长

出海的猹

出海社交 海外市场 出海企业

为什么新加坡会成为国内企业出海的第一站?

出海的猹

企业出海 出海

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