我是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
};
}
}
答案 0 :(得分:25)
您始终可以创建Response
类型的实例,并自行设置Body
和StatusCode
。如果你想要一个快捷方式,你可以做一些像
var r = (Response)"Some string that goes into the body";
r.StatusCode = 123;
return r;
答案 1 :(得分:14)
这应该有用。
public class SendSMS : NancyModule
{
public SendSMS()
{
Post["/SendSMS"] = parameters =>
{
return Negotiate.WithModel("Missing \"to\" param")
.WithStatusCode(HttpStatusCode.BadRequest)
};
}
}
有关详细信息,请查看controlling content negotiation上的文档。
答案 2 :(得分:6)
如果您在编码时遇到问题,最好使用
return new TextResponse(HttpStatusCode.STATUS, "Text Responsé")
答案 3 :(得分:3)
这是我发现的最简单方法:
从你的模块返回:
return new Response {
StatusCode = HttpStatusCode.NotFound, ReasonPhrase = "Resource not found"
};