Swagger json 正在显示不需要的模式,例如 .net 核心 Web api 中的默认对象元数据

Posted

技术标签:

【中文标题】Swagger json 正在显示不需要的模式,例如 .net 核心 Web api 中的默认对象元数据【英文标题】:Swagger json is showing unwanted schemas such as default objects metadata in .net core web api 【发布时间】:2020-06-15 16:32:48 【问题描述】:

我在 asp.net Core Web API 项目中使用 swagger(Swashbuckle.AspNetCore 5.4.1) 并生成 JSON,组件中有很多不需要的细节,如下所示,但我希望它只显示有用的元数据,如枚举细节特定于我的 API 。请告诉我在设置招摇时我在这里做错了什么

下面是启动的代码

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            
                app.UseStaticFiles();

                if (env.IsDevelopment())
                
                    app.UseDeveloperExceptionPage();
                

                // Enable middleware to serve generated Swagger as a JSON endpoint.
                app.UseSwagger();

                // Enable middleware to serve swagger-ui (html, JS, CSS, etc.),
                // specifying the Swagger JSON endpoint.
                app.UseSwaggerUI(su =>
                
                    su.SwaggerEndpoint("/swagger/general/swagger.json", "Common API");
                    su.RoutePrefix = string.Empty;
                );


                app.UseHttpsRedirection();

                app.UseRouting();

                app.UseAuthorization();

                app.UseEndpoints(endpoints =>
                
                    endpoints.MapControllers();
                );
            

  public void ConfigureServices(IServiceCollection services)
        

            services.AddControllers()
                 .AddJsonOptions(options =>
                options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));



            services.AddSwaggerGen(c
               =>
            
                c.SwaggerDoc("general", new Microsoft.OpenApi.Models.OpenApiInfo
                
                    Title = "Common API",
                    Version = "General Purpose",
                    Description = "TEST API",
                    Contact = new Microsoft.OpenApi.Models.OpenApiContact
                    
                        Name = "VJ-TESTER",
                        Email = "VJ@TEST.com",
                    ,
                );

                // Set the comments path for the Swagger JSON and UI.
                var xmlFile = $"Assembly.GetExecutingAssembly().GetName().Name.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                c.IncludeXmlComments(xmlPath);
            );

        

【问题讨论】:

您解决了这个问题吗? 这不是固定的,但我认为只是由于控制器参数而发生的事情 提问时不要使用粗体或更大的字体。 【参考方案1】:

它可能来自控制器端点输入/输出参数。

【讨论】:

以上是关于Swagger json 正在显示不需要的模式,例如 .net 核心 Web api 中的默认对象元数据的主要内容,如果未能解决你的问题,请参考以下文章

swagger 2.0 中 JSON 对象的模式类型是啥

RestAssured 中的无效 JSON Schema 异常,同时针对来自 swagger 的模式进行验证

如何创建包含不同类型数组的swagger架构

如何将 swagger 2.0 JSON 文件分解为多个模块

Symfony NelmioApiDocBundle swagger-ui PHP Annotations json对象,对象属性数组未显示

Swagger:在哪里为调用提供示例 json?