Respond with both body and status code in Nancy
13,799
Solution 1
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;
Solution 2
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.
Solution 3
This is the simplest way I've found:
Return from your Module:
return new Response {
StatusCode = HttpStatusCode.NotFound, ReasonPhrase = "Resource not found"
};
Solution 4
If you have problems with encoding it's better to use
return new TextResponse(HttpStatusCode.STATUS, "Text Responsé")
Comments
-
Sachman Bhatti about 2 years
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 }; } }
-
Sachman Bhatti over 10 yearsOnly problem with this method was that it was escaping the string and adding quotes around it.
-
tBlabs over 7 yearsReasonPhrase is additional text to code not a response body.
-
Christian Horsdal over 4 yearsWhich version of Nancy are you using Anthony?