web-dev-qa-db-ja.com

ナンシーで本文とステータスコードの両方で応答する

私はナンシーが初めてで、カスタムHttpStatusCodeと本文(コンテンツ)の両方を返したいのですが。 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
            };
    }
}
28
Sachman Bhatti

常にResponseタイプのインスタンスを作成し、BodyStatusCodeを自分で設定できます。近道をしたいなら、あなたは次のようなことをすることができます

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

return r;
25
TheCodeJunkie

これは動作するはずです。

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

詳細については、 コンテンツネゴシエーションの制御 のドキュメントを確認してください。

14

エンコーディングに問題がある場合は、使用することをお勧めします

return new TextResponse(HttpStatusCode.STATUS, "Text Responsé")
6
Felipe Leusin

これは私が見つけた最も簡単な方法です:

モジュールから戻る:

return new Response {
                StatusCode = HttpStatusCode.NotFound, ReasonPhrase = "Resource not found"
            };
4
leojh