私はNancyFxを使用しています。私は質問の前に答えを見つけようとしました。モジュールごとまたはルート一元化ごとに
私はモジュールごとに1つの戻り値の型を持っていますが、異なるURLルートでは、それを別の方法で直列化する必要があります。 Nancyパイプラインでシリアライゼーションを配線すると、すべてのルートに接触します。
異なる名前空間に同じタイプをコピーしてコピーすることなく、ルートまたはモジュールごとにシリアル化をカスタマイズできますか?
私はNancyFxを使用しています。私は質問の前に答えを見つけようとしました。モジュールごとまたはルート一元化ごとに
私はモジュールごとに1つの戻り値の型を持っていますが、異なるURLルートでは、それを別の方法で直列化する必要があります。 Nancyパイプラインでシリアライゼーションを配線すると、すべてのルートに接触します。
異なる名前空間に同じタイプをコピーしてコピーすることなく、ルートまたはモジュールごとにシリアル化をカスタマイズできますか?
私は2つのソリューションを作ってみた:オーバーライドされた小道具を対応する上JsonConvert
属性を持つ
string
を返します。要件をよく理解していないと特に推奨することはありません。
応答プロセッサの実装を検討してください。
CanProcessの実装では、NancyContextを調べて、使用するシリアル化スキームのルールを評価できます。
例:
public ProcessorMatch CanProcess(MediaRange requestedMediaRange, dynamic model, NancyContext context)
{
return context.Request.Path != "/" &&
!context.Request.Path.StartsWith("/someroute/") &&
!context.Request.Path.StartsWith("/someotherroute") &&
!context.Request.Path.StartsWith("/login")
? new ProcessorMatch
{
ModelResult = MatchResult.DontCare,
RequestedContentTypeResult = MatchResult.ExactMatch
}
: new ProcessorMatch
{
ModelResult = MatchResult.DontCare,
RequestedContentTypeResult = MatchResult.NoMatch
};
}
がhttps://github.com/NancyFx/Nancy/wiki/Content-Negotiation
を考えてみてください:ルートのWithMediaRangeModelを使用してコンテンツ交渉。
ネゴシエーション中に を使用するメディアタイプ固有のモデルを定義できます。ネゴシエーションパイプラインは、最初に を使用してメディアタイプ固有のモデルを検索し、失敗した場合はWithModelを使用して指定された デフォルトモデルにフォールバックします。
私がよく覚えているのは、アプリケーションレベルのパイプラインではなく、モジュールまたはルートのパイプラインを使用できることです。https://github.com/NancyFx/Nancy/wiki/The-before-and-after-module-hooks – mJehanno