I'm new to Nancy and I want to return both a custom HttpStatusCode and a body (content). If I return an HttpStatusCode, it returns it with a blank body. If I return a string then it returns that as the body but always with a 200 status code of 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
};
}
}
You could always create an instance of the Response
type and set the Body
and StatusCode
yourself. If you wanted to take a shortcut you could do something like
var r = (Response)"Some string that goes into the body";
r.StatusCode = 123;
return r;
This should work.
public class SendSMS : NancyModule
{
public SendSMS()
{
Post["/SendSMS"] = parameters =>
{
return Negotiate.WithModel("Missing \"to\" param")
.WithStatusCode(HttpStatusCode.BadRequest)
};
}
}
For more information check the docs on controlling content negotiation.
If you have problems with encoding it's better to use
return new TextResponse(HttpStatusCode.STATUS, "Text Responsé")
This is the simplest way I've found:
Return from your Module:
return new Response {
StatusCode = HttpStatusCode.NotFound, ReasonPhrase = "Resource not found"
};
来源:https://stackoverflow.com/questions/21099843/respond-with-both-body-and-status-code-in-nancy