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é")
Share:
13,799
Sachman Bhatti
Author by

Sachman Bhatti

Primarily a .NET developer

Updated on June 02, 2022

Comments

  • Sachman Bhatti
    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
    Sachman Bhatti over 10 years
    Only problem with this method was that it was escaping the string and adding quotes around it.
  • tBlabs
    tBlabs over 7 years
    ReasonPhrase is additional text to code not a response body.
  • Christian Horsdal
    Christian Horsdal over 4 years
    Which version of Nancy are you using Anthony?