微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swagger UiSwashBuckle for Core不会为强制标题抛出 UI 级错误消息

如何解决Swagger UiSwashBuckle for Core不会为强制标题抛出 UI 级错误消息

我目前正在使用 Swagger Ui 开发 WebApi。我正面临一个奇怪的问题。当用户尝试调用 API 时,我将一些标题字段设置为强制(*必需)字段。

如果用户错过传递任何标题,它假设显示图像1中给出的警告。(在图像1中,红色标记的字段是查询参数)它工作正常但不适用于标题

enter image description here

对于标题,我遇到了如图 2 所示的问题。错误假设出现在 UI 上,但它出现在浏览器控制台窗口中。

enter image description here

IOOperationFilter 中的代码如下

public void Apply(OpenApiOperation operation,OperationFilterContext context)
        {
            if (operation.Parameters == null)
                operation.Parameters = new List<OpenApiParameter>();

            operation.Parameters.Add(new OpenApiParameter
            {
                Name = "X-Transaction-Id",In = ParameterLocation.Header,required = true,AllowEmptyValue=false,Description="Transaction Id to track the issue"
            });
       }

注意:- 我已经使用 IOperationFilter 来设置所需的标头。使用 Swashbuckle.AspNetCore(5.6.3)。对此的任何帮助都会非常棒!

解决方法

您必须为标头参数指定Schema(数据类型),例如:

            operation.Parameters.Add(new OpenApiParameter
            {
                Name = "X-Transaction-Id",...

                Schema = new OpenApiSchema   // <-----------------
                {
                    Type = "string"
                }
            });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。