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

asp.net-core – 外部包中的模型显示在swagger文档中

我正在研究swagger文档,并添加一个外部包“NodaTime”,并在模型中用作我的属性的类型
public LocalDateTime Date {get;组; }
NodaTime包中的模型和模型显示在文档中.
请看截图中的模型,突出显示的是NodaTime包.
为什么Swagger将其包含在文档中以及如何从文档中排除外部包.

提前致谢.

解决方法

我猜他们正在出现,因为你正在暴露一个使用NodaTime类型的对象. Swashbuckle / Swagger正在显示整个对象图…如果模型使用这些模型,则无法关闭第三方的东西.如果你看看github上的 library中的代码,你可以看到Swashbuckle对几个基类库原语给出了特殊的处理.方法是CreatePrimitiveSchema(),LocalDateTime不在case语句中.因此,作为对此的修复,您可以分叉Swashbuckle并添加NodaTime类型.这可能不值得.

但是,Swashbuckle允许您关闭模型扩展.下面你可以看到我如何设置我的Swashbuckle配置.设置DefaultModelsExpandDepth(-1)将隐藏它们.

public void Configure(IApplicationBuilder app,IHostingEnvironment env,DataGraphContext db) {
        if (env.IsDevelopment()) {
            app.UseDeveloperExceptionPage();
        } else {
            app.UseHsts();
        }

        app.UseSwagger();

        app.UseSwaggerUI(c => {
            c.SwaggerEndpoint("/swagger/v1/swagger.json","API V1");
            c.DefaultModelExpandDepth(0);
            c.DefaultModelsExpandDepth(-1);
        });

        app.UseAuthentication();

        app.UseExceptionHandling();
        app.UseCors("AllowSpecificOrigins");
        app.UseHttpsRedirection();
        app.UseMvc();
    }

原文地址:https://www.jb51.cc/aspnet/248179.html

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

相关推荐