작은 Asp.net 핵심 웹 API 프로젝트를 만들고 있습니다.Controller 메서드 매개 변수를 throw하는 생성자를 처리합니까?
public class Order
{
public readonly int Quantity;
public Order(int quantity)
{
if (quantity < 0)
{
throw new ArgumentException("quantity");
}
this.Quantity = quantity;
}
}
과 같이 보입니다 컨트롤러 : 나는 긍정적 수량와 함께 Order
객체를 전달하면
[Route("api/[controller]")]
public class OrderController : Controller
{
[HttpPost]
public IActionResult Post([FromBody]Order order)
{
// Do stuff...
return this.StatusCode(200);
}
}
에서, Post
방법이 제대로 작동 나는 모델이 보이는 개체가 있습니다. 그러나 Order
을 음수로 전달하면 Order
생성자가 내 응용 프로그램이나 asp.net에서 처리하지 않은 예외를 throw합니다.
이 예외를 적절하게 처리하려면 어떻게해야합니까? 잘못된 문법 (예 : JSON이 잘못 작성된 경우)을 사용하여 요청을 전달하면 예외가 없으며 order
매개 변수의 값이 'null'임을 알 수 있습니다. 비슷한 일을 asp.net 설정할 수 있습니까? 아니면 throw하지 않도록 Order
생성자를 다시 작성해야합니까?
빠른 google이 이것을 파헤 쳤습니다. https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling 어쩌면 먼저 문서를 살펴 봐야 할 것입니다 ... –
"web api 모델 유효성 확인 ". 모델이 유효하지 않은 경우 오류가 아닌 400 BAD REQUEST 응답을 보내야합니다. 모델 검증에 예외를 사용하지 마십시오. – Amy
@CallumLinington 개발자 예외 페이지를 표시하고 싶지 않거나 (반드시) 400을 반환하고 싶습니다. 인수를 null 또는 이와 유사한 것으로 설정하여 메서드를 실행하려고합니다. – Oliver