在Nancy中回复身体和状态代码

Sac*_*tti 28 nancy

我是Nancy的新手,我想要返回一个自定义的HttpStatusCode和一个body(内容).如果我返回一个HttpStatusCode,它将返回一个空白的主体.如果我返回一个字符串,那么它将返回该字符串,但总是使用200状态代码OK.

public class SendSMS : NancyModule
{
    public SendSMS()
    {
        Post["/SendSMS"] = parameters =>
            {
                return HttpStatusCode.BadRequest; // this works, no body
                return "Missing \"to\" parameter"; // this works, 200 status code
                // want to return status code with message
            };
    }
}
Run Code Online (Sandbox Code Playgroud)

The*_*kie 25

您始终可以创建该Response类型的实例并设置Body和您StatusCode自己.如果你想要一个快捷方式,你可以做类似的事情

var r = (Response)"Some string that goes into the body";
r.StatusCode = 123;

return r;
Run Code Online (Sandbox Code Playgroud)


Chr*_*dal 14

这应该工作.

public class SendSMS : NancyModule
{
   public SendSMS()
   {
       Post["/SendSMS"] = parameters =>
       {
           return Negotiate.WithModel("Missing \"to\" param")
                           .WithStatusCode(HttpStatusCode.BadRequest)           
       };
   }
} 
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看有关控制内容协商的文档.

  • 此方法的唯一问题是它转义了字符串并在其周围添加了引号。 (2认同)

Fel*_*sin 6

如果你有编码问题,最好使用

return new TextResponse(HttpStatusCode.STATUS, "Text Responsé")
Run Code Online (Sandbox Code Playgroud)


leo*_*ojh 5

这是我找到的最简单的方法:

从模块返回:

return new Response {
                StatusCode = HttpStatusCode.NotFound, ReasonPhrase = "Resource not found"
            };
Run Code Online (Sandbox Code Playgroud)

  • ReasonPhrase 是用于编码而不是响应正文的附加文本。 (3认同)