在 net core 2.2 中隐藏招摇的不良响应示例模型

Posted

技术标签:

【中文标题】在 net core 2.2 中隐藏招摇的不良响应示例模型【英文标题】:Hide swagger bad response example model in net core 2.2 【发布时间】:2019-10-13 22:55:28 【问题描述】:

我将我的 netcore 2.1 项目升级到 2.2,但我的 swagger 页面有问题。

以前在招摇的错误响应中,它只显示没有模型的“错误请求”。

但是在我升级到 net core 2.2 后,错误请求示例中显示了一个模型。图片如下。

我如何隐藏它以便它只显示“错误请求”。

我已经使用 CustomApiConvention 进行了测试,但到目前为止还没有成功。

    [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;
    

如何隐藏它以便它只显示“错误请求”?

【问题讨论】:

无法测试,但我认为删除 ProducesDefaultResponseType 会这样做。对于 2xx 响应类型,您必须在 ProducesResponseType 属性中添加适当的 typeof 不,还是一样。 【参考方案1】:

给遇到同样问题的人。只需将其添加到您的代码中即可。

services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.ConfigureApiBehaviorOptions(options =>

    options.SuppressMapClientErrors = true;
);

这将禁用 ProblemDetails 响应。

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

【讨论】:

.SetCompatibilityVersion(CompatibilityVersion.Version_2_2) 给出了一个警告(在我的 ASP.NET Core 3.0 项目中),但不是更改为 .Version_3_0,只是将其忽略也完全可以。 太棒了,我已经搜索了好几天了!我正在使用net5.0,这对我有用:services.AddControllers(x =&gt; x.Conventions.Add(new ApiExplorerVersionConvention())).ConfigureApiBehaviorOptions(x =&gt; x.SuppressMapClientErrors = true; );

以上是关于在 net core 2.2 中隐藏招摇的不良响应示例模型的主要内容,如果未能解决你的问题,请参考以下文章

“内容”是啥意思:在招摇/openapi“响应”中是啥意思:

获取 ASP.NET-Core 2.2 控制器中的控制器名称和方法名称

将项目从 2.2 更新到 3.1(缺少程序集)或如何在 .NET Core 中使用 API POST 请求时,PostAsJsonAsync()在 .Net Core 3.1 中不起作用 [重复]

在 .Net Core 2.2 Api 中扩展 IIS 日志

如何将 .NET Core 2.2 Web API 迁移到 .NET Core 3.0?

如何在 ASP.NET Core 2.2 中使用 IValidateOptions 验证配置设置?