写点什么

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

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

关注

评论

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

机器学习中常用的处理手段

子夜2104

学习

利用Translate ToolKit 2.5.0 API构建Flask web app

虚拟世界的懒猫

Python nginx flask uwgsi translate

消息队列Kafka - Kafka中的选举

Java收录阁

kafka

从“成为作者”到“立即创作”:开启你的“写作极客”生活

岛乾坤

写作

Hadoop集群搭建-03编译安装hadoop

虚拟世界的懒猫

hadoop centos7

选赵敏还是选小昭,这可真是个问题 | Decision Tree

张利东

Python 学习 算法 决策树

“我代码写完了,QA可以测了。”

蔡建斌

Scrum 敏捷 质量管理 测试

我愿沉迷于学习,无法自拔(一)

孙瑜

深度思考 个人成长

如何无缝的将Flutter引入现有应用?

Geek_70xtik

flutter ios android 开源 移动应用

Hadoop集群搭建-01前期准备

虚拟世界的懒猫

hadoop hdfs mapreduce zookeeper centos

Hadoop集群搭建-04安装配置HDFS

虚拟世界的懒猫

hadoop

Arthas安装及基本用法

编程随想曲

Java

如何写作一本书(2):前言与正文

英子编辑

技术 写作

程序员陪娃漫画系列——喂药

孙苏勇

程序员 生活 陪伴 漫画

Zookeeper选举机制

tunsuy

zookeeper 开源 源码分析 分布式协同

centos6搭建NEXUSphp pt私人种子站

虚拟世界的懒猫

centos nexusphp pt bt

idea+spring4+springmvc+mybatis+maven实现简单增删改查CRUD

虚拟世界的懒猫

spring mybatis ssm springmvc java8

你真的理解 Java 的基础数据类型吗

Rayjun

Java

下一代存储NVMe over Fabrics

HU

Day 47|Week 07-5 曾国藩家书|问学篇-学问何处何时都可做

熊小北同学

当 Redis 发生高延迟时,到底发生了什么

程序员历小冰

redis Linux 延迟

Hadoop集群搭建-05安装配置YARN

虚拟世界的懒猫

hadoop

配置微软Azure大数据HDInsight云集群

虚拟世界的懒猫

microsoft 大数据 微软 azure hdinsght

1分钟就能学会的时间管理大法

小匚

时间分配 时间管理

管理信息系统课程基础知识

小匚

【终于解决】ubuntu19安装nvidia驱动后屏幕亮度默认最亮不可调节

虚拟世界的懒猫

ubuntu 英伟达

和邓小平、基辛格“谈笑风生”的世界第一女记者:奥琳亚娜·法拉奇

赵新龙

记者 编辑 采访 法拉奇

安装VMware16兼容Hyper-v+WSL2+Docker+解决0x80370102报错

虚拟世界的懒猫

Docker vmware vm hyper-v WSL2

做好仓储控制系统(WCS)的关键

申扬科技

仓储控制系统 WCS

Hadoop集群搭建-02安装配置Zookeeper

虚拟世界的懒猫

hadoop zookeeper centos7

跬步贴|5分钟搞定缓存击穿问题

架构师跬步营

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