私はナンシーが初めてで、カスタム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
};
}
}
常にResponse
タイプのインスタンスを作成し、Body
とStatusCode
を自分で設定できます。近道をしたいなら、あなたは次のようなことをすることができます
var r = (Response)"Some string that goes into the body";
r.StatusCode = 123;
return r;
これは動作するはずです。
public class SendSMS : NancyModule
{
public SendSMS()
{
Post["/SendSMS"] = parameters =>
{
return Negotiate.WithModel("Missing \"to\" param")
.WithStatusCode(HttpStatusCode.BadRequest)
};
}
}
詳細については、 コンテンツネゴシエーションの制御 のドキュメントを確認してください。
エンコーディングに問題がある場合は、使用することをお勧めします
return new TextResponse(HttpStatusCode.STATUS, "Text Responsé")
これは私が見つけた最も簡単な方法です:
モジュールから戻る:
return new Response {
StatusCode = HttpStatusCode.NotFound, ReasonPhrase = "Resource not found"
};