写点什么

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

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

关注

评论

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

新定位人工智能+营销服务 沃丰科技入选国家级专精特新“小巨人”

科技怪咖

兆骑科创创新创业服务平台——创新创业的联通之桥

兆骑科创凤阁

央企数智化转型实践沃丰科技AI助招采平台打造全新客服体系

科技怪咖

中国掀起数字化浪潮|沃丰科技AI外呼机器人助家电企业潜客筛选自动化

科技怪咖

AI加持沃丰科技ServiceGo智能售后,让制造业服务提升“肉眼可见

sofiya

夯实中国智能制造软实力沃丰科技ServiceGo让物流机器人龙头企业售后无忧

科技怪咖

多路混流实操流程

ZEGO即构

2022亚洲视博会圆满落幕,3DCAT荣获“优秀沉浸式视觉解决方案”奖

3DCAT实时渲染

HR拥抱人工智能 沃丰科技AI助力星巴克、泰康保险打造智慧HR中心

sofiya

芒果TV创新研究院联合腾讯云发布“虚拟人直播互动平台”,支持千人沉浸式体验

科技热闻

新书上市 | 关于推荐系统,这本书包含了你想知道的一切!

图灵教育

2分钟了解什么是实时渲染

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

华为云“828 B2B企业节”,积木易搭云速3D云展与您不见不散

sofiya

新书上市 | 关于推荐系统,这本书包含了你想知道的一切!

图灵社区

多人沉浸式音乐互动,3DCAT实时云渲染新业务场景来袭

3DCAT实时渲染

云计算 元宇宙 实时渲染云

信息化赋能,移动办公系统WorkPlus助推智慧检务工作安全高效发展

BeeWorks

Spring永远的神,这绝对是目前最全面的spring全家桶学习笔记

Geek_Yin

spring 编程 程序员 Java、 跳槽季

制造业专家黄培博士:沃丰科技ServiceGo 智能售后服务成就高绩效企业

科技怪咖

对话HR专家崔晓燕 沃丰科技AI+HRSSC如何提升企业人效

科技怪咖

瑞云科技荣获全国电子信息行业专精特新“最具创新价值 TOP20”!

3DCAT实时渲染

什么是实时渲染,实时渲染是如何工作的

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

Salesforce解散中国团队,国产SaaS软件如何完美替代

sofiya

关于游戏中的实时渲染

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

“外卖式”售后服务体验来袭 沃丰科技ServiceGo让售后服务更智能

sofiya

01_Linux基础-部署-VMware-Xshell-Xftp-内核-安迪比尔定理

mycpen

Linux

兆骑科创创投平台,赛事活动承办,高层次人才引进

兆骑科创凤阁

【温氏集团】流程驱动的运维自动化在温氏集团的实践

嘉为蓝鲸

运维 AIOPS

实时云渲染如何助力虚拟展厅

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

实时云渲染有哪些特点,主要优势有哪些

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

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