我使用NancyFx,我试图在问题之前找到答案。
每个模块我有一个返回类型,但在不同的URL路由中,我需要以不同的方式序列化它,只是特定的属性。 如果我在Nancy管道中连接序列化,它会触及所有路由。
是否可以自定义每个路由或模块的序列化,而无需在不同的命名空间中粘贴相同类型的副本?
答案 0 :(得分:1)
如果不更好地理解要求,不确定具体推荐什么。
考虑实施响应处理器。
在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指定,如果失败。
答案 1 :(得分:0)
我想出了两个解决方案:
public IActionResult SendResponse()
{
Response.Headers.Add("X-Total-Count", "20");
return Ok();
}
属性的派生类型; JsonConvert
。