【问题标题】:How to implement REST API that supports SCIM filtering in C#?如何在 C# 中实现支持 SCIM 过滤的 REST API?
【发布时间】:2016-05-19 03:38:19
【问题描述】:

我需要实现一个支持查询用户的 ASP.NET Web API 作为 SCIM 过滤规范https://www.rfc-editor.org/rfc/rfc7644#section-3.4.2.2

最快的方法是什么?我知道我需要实现一个可以解析过滤表达式的解析器,然后使用专用的用户存储库执行该表达式并返回选定的实体,但是从头开始实现该解析器是一项巨大的工作,对吧?

是否有更快或更标准的方式来支持 SCIM 过滤?

【问题讨论】:

标签: c# asp.net api rest scim


【解决方案1】:

请看https://github.com/PowerDMS/Owin.Scim

我已经实现它,使得 Owin.Scim 获取过滤器字符串,无论是查询过滤器还是补丁过滤器,对其进行规范化,然后构造一个表达式树/lambda 谓词,您可以在 linq 中使用它。

尚未实现的是如何支持 SCIM 的根查询 - 您可以同时过滤多种资源类型。

ScimFilter 规范化字符串,支持资源扩展。 修补是一个完全独立的过程,它使用自定义的 json.net 合约解析器。在撰写本文时,ScimFilter 将为您提供 PathFilterExpressions 列表。 (如果您正在查询,您将只有一个)。

您可以使用扩展方法获取PathFilterExpression 并取回强类型谓词(Func<Resource, bool>)。见:https://github.com/PowerDMS/Owin.Scim/blob/master/source/Owin.Scim/Extensions/PathFilterExpressionExtensions.cs

或者,您可以获取 alpha Owin.Scim.Antlr dll。 https://github.com/PowerDMS/Owin.Scim/tree/master/source/lib

这将为您提供ScimFilterLexerScimFilterParser

【讨论】:

  • 我应该注意到这个项目仍处于 alpha 阶段,因此可能存在并且可能确实存在错误
  • 效果很好。十分感谢。你拯救了我的一天。我仍然需要为双精度、Uri 实现更多自定义 eq、gt、lt..operator,但无论如何,没关系。
  • 很高兴听到这个消息!我已经在 owin.scim 中编写了大量的测试来涵盖 scim 过滤器,但是如果您发现任何问题,请随时将它们报告为 github 问题。另外,如果您最终选择它,请将其标记为此处的答案。谢谢!
猜你喜欢
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 2014-11-24
  • 2016-07-05
相关资源
最近更新 更多