How to Customize a Model Validation Response which results in an HTTP 400 Error Code?

edx
edx
506 Points
24 Posts

In .NetCore API project, I'm using following line of code in action to check and throw error:

if (!ModelState.IsValid)
      throw new Exception($"Invalid input model") ;

But seems, it's not reaching to the throw part and returning 400 status code with following api response:

{
    errors =     {
        Name =         (
            "The Name field is required."
        );
    };
    status = 400;
    title = "One or more validation errors occurred.";
    traceId = "00-19041551252dec44959314a355f38eb7-76202d713d3a0c4f-01";
    type = "https://tools.ietf.org/html/rfc7231#section-6.5.1";
}

Is there any way to customize this response model?

 

Views: 1424
Total Answered: 1
Total Marked As Answer: 1
Posted On: 09-Jul-2021 06:05

Share:   fb twitter linkedin
Answers
Brian
Brian
2376 Points
13 Posts
         

As per documentation: automatic-http-400-responses , the [ApiController] attribute makes model validation errors automatically trigger an HTTP 400 response. Consequently, the following code is unnecessary in an action method:

if (!ModelState.IsValid)
      throw new Exception($"Invalid input model") ;

 

You can disable the automatic 400 behavior by seting the SuppressModelStateInvalidFilter property to true. Add the following code in Startup.ConfigureServices:

services.Configure<ApiBehaviorOptions>(options =>
{
    options.SuppressModelStateInvalidFilter = true;
});
Posted On: 13-Jul-2021 00:03
great..
 - Rahul Maurya  12-Mar-2023 02:10
 Log In to Chat