私は小さなAsp.net Core Web APIプロジェクトを作っています。Controllerメソッドのパラメータをスローするコンストラクタを処理しますか?
public class Order
{
public readonly int Quantity;
public Order(int quantity)
{
if (quantity < 0)
{
throw new ArgumentException("quantity");
}
this.Quantity = quantity;
}
}
とこのようになりますコントローラ:
[Route("api/[controller]")]
public class OrderController : Controller
{
[HttpPost]
public IActionResult Post([FromBody]Order order)
{
// Do stuff...
return this.StatusCode(200);
}
}
私はポジティブ量でOrder
オブジェクトを渡すと、Post
方法が正しく動作する私はこのようになりますモデルオブジェクトを持っています。しかし、Order
を負の数量で渡すと、Order
コンストラクタは、アプリケーションまたはasp.netによって処理されない例外をスローします。
この例外を適切に処理するにはどうすればよいですか?私は無効な構文(例えばJSONがひどく形成されているなど)でリクエストを渡すと例外がなく、order
パラメータの値が 'null'であることがわかります。同様のことをasp.netに設定できますか?または、投げないようにOrder
コンストラクタを書き直す必要がありますか?
すぐにGoogleがこれを見つけました:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling多分あなたは最初にドキュメントを見てください... –
"web apiモデルバリデーション "。モデルが無効な場合は、エラーではなく、400 BAD REQUEST応答を返す必要があります。モデルの検証に例外を使用しないでください。 – Amy
@CallumLinington私は開発者の例外ページを表示したくない、または(必然的に)400を返す必要があります。引数を 'null 'または同様に設定してメソッドを実行したいと思います。 – Oliver