分配到时,如何利用内容协商管道NancyContext.Response?
目前,IStatusCodeHandler.Handle无论内容协商如何,我的 方法都会返回JSON.
我希望此方法根据任何内容协商使用JSON或XML(最好使用内容协商管道.)
public void Handle(HttpStatusCode statusCode, NancyContext context)
{
var error = new { StatusCode = statusCode, Message = "Not Found" };
context.Response =
new JsonResponse(error, new JsonNetSerializer())
.WithStatusCode(statusCode);
}
Run Code Online (Sandbox Code Playgroud)
在默认的 Nancy 引擎中,状态代码处理程序在内容协商发生后被调用。如果您使用的是 0.23 或更高版本,内容协商部分已被提取到单独的服务中,并且可以在任何地方、任何时间使用,只需给定模型和上下文即可。使用此服务,IResponseNegotiator您应该能够使用错误模型重新协商。
像这样的东西:
public class MyStatusCodeHandler : IStatusCodeHandler
{
private readonly IResponseNegotiator _negotiator;
public MyStatusCodeHandler(IResponseNegotiator negotiator)
{
_negotiator = negotiator;
}
public bool HandlesStatusCode(HttpStatusCode statusCode, NancyContext context)
{
return statusCode == HttpStatusCode.NotFound;
}
public void Handle(HttpStatusCode statusCode, NancyContext context)
{
var error = new { StatusCode = statusCode, Message = "Not Found" };
context.Response = _negotiator.NegotiateResponse(error, context);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |