Hide swagger bad response example model in net core 2.2
Asked Answered
T

2

13

I upgrade my netcore 2.1 project to 2.2 and i have a problem with my swagger page.

Previously in swagger bad response it only show "Bad Request" without the model.

But after i upgraded to net core 2.2 there is a model shown in the bad request example.The image is below.

How do i hide it so that it just show the "Bad request".

I already tested using CustomApiConvention but no success so far.

    [HttpGet("{id}")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
    [ProducesResponseType(StatusCodes.Status404NotFound)]
    [ProducesDefaultResponseType]
    public async Task<ActionResult<Employee>> GetEmployee(int id)
    {
        var employee = await _context.Employee.FindAsync(id);

        if (employee == null)
        {
            return NotFound();
        }

        return employee;
    }

How do i hide it so that it just show the "Bad request"?

enter image description here

Triode answered 28/5, 2019 at 11:56 Comment(2)
Can't test but I assume removing ProducesDefaultResponseType would do so. For the 2xx responsetypes you would then have to add the appropriate typeof in the ProducesResponseType attribute.Calcariferous
Nope, it is still the same.Triode
T
19

To anyone who got the same problem. Just add this to your code.

services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.ConfigureApiBehaviorOptions(options =>
{
    options.SuppressMapClientErrors = true;
});

This will disable ProblemDetails response.

https://learn.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.2#problem-details-for-error-status-codes

Triode answered 30/5, 2019 at 12:3 Comment(2)
The .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) gave a warning (in my ASP.NET Core 3.0 project) but instead of changing to .Version_3_0 just leaving it out completely works too.Bort
Brilliant, I've been searching this for days! I'm using net5.0 and this worked for me: services.AddControllers(x => x.Conventions.Add(new ApiExplorerVersionConvention())).ConfigureApiBehaviorOptions(x => { x.SuppressMapClientErrors = true; });Fatuity
N
3

The solution when using .NET 5.0 is to update the Startup.cs file and add this part to the ConfigureServices method

services.AddControllers()
    .ConfigureApiBehaviorOptions(options =>
    {
        options.SuppressMapClientErrors = true;
    });
Numskull answered 22/4, 2022 at 7:53 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.