2014-01-13 9 views
24

Ich bin neu in Nancy und ich möchte sowohl einen benutzerdefinierten HttpStatusCode und einen Körper (Inhalt) zurückgeben. Wenn ich einen HttpStatusCode zurückgebe, gibt es ihn mit einem leeren Körper zurück. Wenn ich eine Zeichenkette zurückgebe, gibt sie diese als Körper zurück, aber immer mit einem 200 Statuscode von OK.Reagieren Sie mit Körper und Statuscode in Nancy

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 
      }; 
    } 
} 

Antwort

22

Sie könnten immer eine Instanz des Typs Response erstellen und die Body und StatusCode selbst einstellen. Wenn Sie eine Abkürzung nehmen wollte könnten Sie so etwas wie

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

return r; 
+0

Danke. Dies hat wie erhofft funktioniert. –

13

Dies sollte funktionieren.

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

Für weitere Informationen überprüfen Sie die Dokumentation auf controlling content negotiation.

+1

Nur Problem mit dieser Methode war, dass es die Schnur entkam und Zitate arou hinzufügte nd es. –

4

tun Wenn Sie Probleme haben mit kodieren, ist es besser

return new TextResponse(HttpStatusCode.STATUS, "Text Responsé") 
3

verwenden Dies ist die einfachste Art, wie ich gefunden habe:

Rückkehr von Ihrem Modul:

+0

ReasonPhrase ist zusätzlicher Text zum Codieren und kein Antworttext. – tBlabs