我使用NancyFx,我試圖在問題之前找到答案。每個模塊或每個路由序列化的NancyFx
我有一個單一的返回類型,每個模塊,但在不同的URL路由我需要序列化它不同,只是具體的屬性。 如果我在南希管道中連線序列化,它會觸及所有路由。
是否可以自定義每個路由或模塊的序列化,而無需在不同的命名空間中粘貼相同類型的副本?
我使用NancyFx,我試圖在問題之前找到答案。每個模塊或每個路由序列化的NancyFx
我有一個單一的返回類型,每個模塊,但在不同的URL路由我需要序列化它不同,只是具體的屬性。 如果我在南希管道中連線序列化,它會觸及所有路由。
是否可以自定義每個路由或模塊的序列化,而無需在不同的命名空間中粘貼相同類型的副本?
我拿出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