簡體   English   中英

Web Api中的Swagger UI設置,用於端點和類文檔

[英]Swagger UI setup in Web Api for endpoint and class documentation

我在VS2013中有一個解決方案,其中包含幾個類庫和一個Web API項目。 設置Swagger UI時遇到了一些問題。 首先,當我為Web API項目設置swashbuckle時,我只能指向一個文檔XML文件。 有沒有辦法指出要包含多個XML文件,以便Swagger不僅可以為控制器中的路由選擇文檔,還可以從其他項目中獲取域對象? 這是我來自SwaggerConfig.cs的代碼

SwaggerSpecConfig.Customize
    (
        c =>
        {
            c.IncludeXmlComments(Path.Combine(dirPath, projName + ".xml"));
        }
    );

如果添加多個XML文件,它將僅從IncludeXmlComments中拾取最后一個文件。

其次,我在返回JSON時將駝峰式的情況用於DTO

formats.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

但是,當我在Swagger UI的“響應類”中查看響應模型和模型架構時,我看到了確切的類屬性名稱,而不是當命中端點時返回的JSON模式。 有沒有辦法在Swagger UI文檔頁面中顯示確切的JSON模式?

要添加多個XML文件,請像這樣配置swagger。

       SwaggerSpecConfig.Customize(c =>
        {
            // single XML Comment Files
            //c.IncludeXmlComments(GetXmlCommentsPath());

            // Multiple XML Comment Files
            string[] paths = GetXmlCommentsPaths();
            foreach (string xmlCommentsPath in paths)
            {
                c.OperationFilter(new ApplyActionXmlComments(xmlCommentsPath))
                    .ModelFilter(new ApplyTypeXmlComments(xmlCommentsPath));
            }
        });

在4.1版之后,您可以這樣編寫:

c.IncludeXmlComments("File1_Path");
c.IncludeXmlComments("File2_Path"));

另請參閱此處

我正在使用5.6.0版,並且多個XML文檔對我有用:

var dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin"));
foreach (var fi in dir.EnumerateFiles("*.xml"))
{
    c.IncludeXmlComments(fi.FullName);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM