【问题标题】:Add textual sections to Swagger using Swashbuckle使用 Swashbuckle 将文本部分添加到 Swagger
【发布时间】:2019-01-22 09:31:37
【问题描述】:

我正在使用带有 Redoc 的 Swashbuckle 来记录我的 ASP.NET Core 2.2 API。 The live ReDoc demo 在顶部有一组部分(例如“简介”),带有一些自定义 html。我想在我的 API 中生成类似的部分,但不知道该怎么做。

基本上我有:

services.AddSwaggerGen(c => {
    c.SwaggerDoc(...);
    c.IncludeXmlComments(...);
    c.AddSecurityDefinition("OAuth2", ...);
});

后来:

app.UseReDoc(c => {
    c.SpecUrl = "/swagger/v1/swagger.json";
    c.RoutePrefix = "";
});

我已经浏览了智能感知选项,以及 Swashbuckle readmewiki,但找不到生成此类部分的方法。

在基于 Swashbuckle.AspNetCore.ReDoc 的文档的开头添加 HTML 部分的方法是什么?

【问题讨论】:

    标签: c# asp.net-core swagger swashbuckle redoc


    【解决方案1】:

    您可以在传递给SwaggerDoc(...)InfoDescription 中使用markdown。您可以在 ReDoc 中包含最终作为侧边栏导航项的标题。例如:

    c.SwaggerDoc(Version, new Info
        {
            Title = "My API",
            Description = @"This is our API.
    
                ## Introduction
    
                We can use markdown (with [links](https://example.org)) to explain more about the API.
    
                Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    
                - Bullet item
                - And another bullet item
    
                Some more lorem ipsum.
    
                ## Logging
    
                Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    
                Here's a sample block:
    
                ```bash
                curl https://example.org/api/v1/some-method \
                -H 'X-Header: value' \
                -v
                ```
    
                Lorem ipsum **doler sit met something more** test text.
            ",
    });
    

    我建议将该降价放在 embedded resource file (e.g. api-intro.md) and reading it runtime 中。

    【讨论】:

    • 有没有办法做到这一点,不涉及将大块文本粘贴到 Startup.cs 中?
    • @nathanjw 是的,事实上,我通常会这样做。使用这种方法在我的答案底部添加了一个链接。
    • 您当然也可以使用任何其他方法来封装和移动该字符串(最简单的是带有字符串的SwaggerConstants.cs 文件)。
    • 我们最终就是这样做的。比我们想象的要简单得多,因为它必须弄乱自定义 index.html 文件和 css。感谢您发布链接:)
    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2018-07-29
    相关资源
    最近更新 更多