写点什么

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

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

关注

评论

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

AB Micro850笔记 热电阻热电偶扩展模块 2085-IRT4

万里无云万里天

自动化 PLC 工厂运维

网页也能跑大模型?

蛋先生DX

AI 浏览器 webassembly 大模型 onnxruntime-web

高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇二)

肖哥弹架构

maven 效能

万界星空科技 MES数据的集成平台

万界星空科技

系统集成 mes 万界星空科技mes 生产管理MES系统

AB Micro850笔记 三种编程方式 梯形图 功能块 结构化文本

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 上传与下载

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 使用ccw粗略了解PLC信息

万里无云万里天

自动化 PLC 工厂运维

PLC笔记 知识点汇总 day2

万里无云万里天

PLC 电工

5.8K Star,Microsoft 官方开源电商平台

GitHub指北

C#

PLC笔记 知识点汇总 day3

万里无云万里天

PLC

一种绕过Rust借用检查和不可变性的方法

SkyFire

rust 借用检查

8.9K Star,开源自托管离线翻译引擎

GitHub指北

Python

6.1K Star,简简单单的看直播

GitHub指北

dart

API 数据接口:使用操作流程与安全指南

Noah

AB Micro850笔记 485串口插件 2080-SERIALISOL

万里无云万里天

自动化 PLC 工厂运维

速速收藏!这些2024年上映的AI电影与短剧,申请加入你的国庆假期宅家计划!

可信AI进展

架构误区系列21:模型的边界和流式处理

agnostic

领域模型 模型边界

AB Micro850笔记 更新固件版本

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 工程应用经验总结

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 使用ccw了解扩展与插件信息

万里无云万里天

自动化 PLC 工厂运维

5.3K Star,轻量级联想拯救者工具箱

GitHub指北

C#

MES系统如何实现生产车间的实时监控、精准调度

万界星空科技

工业互联网 mes 工业自动化 万界星空科技mes MES、

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