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

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

关注

评论

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

探秘驱动软件系统高效协同的高效协同之API接口

科普小能手

数据挖掘 软件开发 API 接口 API 文档 API 测试

HarmonyOS Next 元服务新建到上架全流程

万少

鸿蒙

远程软件怎么选?ToDesk、向日葵、Parsecd、TeamViewer评测结果公布

-亦世凡华、

纯配时效服务-双Redis集群设计

京东科技开发者

7thonline第七在线入选WIM2024《2024数据智能服务商TOP30》榜单

第七在线

轻松上手!PyCharm安装全攻略,编程效率翻倍!

测试人

软件测试

什么是数字化转型?

万界星空科技

数字化转型 数字化 制造业 mes 数字化工厂

字节还是那么喜欢考算法

王中阳Go

字节跳动 面试 go语言

HarmonyOS Next 实战卡片开发 03

万少

鸿蒙

AIP智能体人才市场:构建未来软件开发的新模式

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

人工智能

针对Flexus X实例云服务器的CPU和内存性能测评

轶天下事

QT 软件项目的外包开发

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

软件外包公司 QT外包开发 QT开发

京东商品评论数据接口(JD.item_review)丨京东API接口指南

tbapi

京东API接口 京东商品评论接口

利用FIO工具测试Flexus云服务器X实例存储性能.

轶天下事

京东API接口深度解析:如何高效获取商品SKU与关键词搜索商品信息

代码忍者

京东API接口 京东评论API接口

AI安全的挑战:如何让人工智能变得更加可信

天津汇柏科技有限公司

AI安全 AI 人工智能

阿里巴巴1688 API接口深度解析:轻松获取商品详情与高效执行关键词搜索

代码忍者

1688API接口 关键词搜索1688API

WebGL 开发 3D 项目的详细流程

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

数字孪生 软件外包公司 webgl开发

项目一体化管理系统(源码+文档+部署+讲解)

深圳亥时科技

HarmonyOS Next 实战卡片开发 02

万少

鸿蒙

openGauss Summit 2024在北京圆满落幕,中国科学院院士钱德沛发表开场致词

极客天地

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率

京东科技开发者

资源规划管理系统(源码+文档+部署+讲解)

深圳亥时科技

HarmonyOS Next 实战卡片开发 01

万少

鸿蒙

开源即时通讯IM框架MobileIMSDK的鸿蒙NEXT端开发快速入门

JackJiang

网络编程 即时通讯 IM 鸿蒙OS MobileIMSDK

由 Mybatis 源码畅谈软件设计(四):动态 SQL 执行流程

京东科技开发者

茶叶连锁店管理系统(源码+文档+部署+讲解)

深圳亥时科技

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