2016-05-19 5 views
0

ユーザにSCIMフィルタリング仕様https://tools.ietf.org/html/rfc7644#section-3.4.2.2としてクエリをサポートするASP.NET Web APIを実装する必要があります。C#でSCIMフィルタリングをサポートするREST APIを実装する方法

これを行う最も簡単な方法は何ですか?私はフィルタリング式を解析し、専用のユーザリポジトリでその式を実行し、選択したエンティティを返すパーサを実装する必要があることを知っていますが、そのパーサをゼロから実装するという膨大な作業ですか?

SCIMフィルタリングをサポートするためのより高速な方法や標準的な方法はありますか?

+0

あなた自身のためにパーサーを作成する時間がない場合は、現在最も良い賭けです。これはhttp://beyond-code.com/LinqToQuerystring/syntax.htmlです。 問題は、このライブラリが複数の2年... –

答えて

1

私はOwin.Scimは、クエリフィルタまたはパッチフィルターかどうか、フィルタ文字列を受け取り、それを正規化し、その後、あなたが使用することができる発現ツリー/ラムダ述語を構築すること、それは、そのような実装したhttps://github.com/PowerDMS/Owin.Scim

を参照してください。 linq。

まだ実装されていないのは、複数のリソースタイプを一度にフィルタリングするSCIMのquery-on-rootをサポートする方法です。

ScimFilterは、リソース拡張をサポートして文字列を正規化します。 パッチは、カスタムjson.netコントラクトリゾルバを使用する別のプロセスです。この執筆時点で、ScimFilterはPathFilterExpressionsのリストを提供します。 (あなたが照会している場合、あなたは1つしか持っていません)。

拡張メソッドを使用してPathFilterExpressionを取得し、強く型付けされた述語(Func<Resource, bool>)を取得することができます。参照:https://github.com/PowerDMS/Owin.Scim/blob/master/source/Owin.Scim/Extensions/PathFilterExpressionExtensions.cs

また、Owin.Scim.Antlrアルファのアルファベットを取得することもできます。 https://github.com/PowerDMS/Owin.Scim/tree/master/source/lib

これはあなたにScimFilterLexer & ScimFilterParserを与えるだろう。

+0

このプロジェクトはまだアルファベットになっているので、バグが存在する可能性があります。恐らく存在する可能性があります。 – Daniel

+1

素晴らしいです。大いに感謝する。あなたは私の一日を救った。私はまだいくつかのカスタムeqを実装する必要があります。gt、lt..operatorはdouble、Uriですが、とにかくうまくいきます。 – quinvit

+0

それを聞いてうれしい!私はowin.scimのscimフィルタをカバーするためにかなりの量のテストを書いていますが、問題が見つかった場合はgithubの問題として報告してください。また、もしあなたがそれで終わるなら、ここに答えとしてマークしてください。ありがとう! – Daniel

関連する問題