c# - 如何在 ASP.NET Core Swagger (Swashbuckle.AspNetCore) 中定义 Controller 描述?

标签 c# asp.net-core swagger swagger-ui swashbuckle

我正在 ASP.NET Core WebApi 项目中尝试 Swagger,一切正常 - 除了 Controller 描述。

例如,我有 UredskoPoslovanjeController,Swagger UI 中的描述是 UredskoPoslovanje,我找不到更改它的方法。

列出了我找到的唯一解决方案 here 但是,我认为这与 API 版本冲突,因为版本控制使用完全相同的属性 [ApiExplorerSettings(GroupName="v2")]

这是这部分的 swagger.json: UredskoPoslovanje part in swagger.json

我的 Controller 是这样定义的:

   /// <summary>
    /// Uredsko poslovanje API
    /// </summary>
    [Authorize]
    [Route("api/[controller]")]
    public class UredskoPoslovanjeController : Controller
    {
        private LinkDbContext ctx;

        public UredskoPoslovanjeController(LinkDbContext ctx)
        {
            this.ctx = ctx;
        }

        /// <summary>
        /// Vraća broj pismena za zadani OIB
        /// </summary>
        /// <param name="OIB">OIB korisnika za koji se traži broj pismena</param>
        /// <returns>Vraća broj pronađenih pismena</returns>
        /// <response code="200">Vraća broj pismena za traženi OIB</response>
        /// <response code="400">OIB ne postoji</response>        
        /// <response code="401">Nemate pristup metodi (neispravna autorizacija)</response>        
        [HttpGet("BrojPismena/{oib}")]
        public ActionResult<BrojPismenaModel> DajBrojPismena(string OIB)
        {
            if (string.IsNullOrWhiteSpace(OIB)) return BadRequest("OIB ne smije biti prazan");
            else
            {
                var osoba = ctx.Osoba.FirstOrDefault(x => x.Oib == OIB);
                if (osoba == null) return BadRequest($"Osoba s OIB-om '{OIB}' ne postoji!");
                else
                {
                    return Ok(new BrojPismenaModel() { OIB = OIB, BrojPismena = ctx.UpPismeno.Count() });
                }
            }            
        }
    }

我希望“Uredsko poslovanje API”作为 Controller 描述,但这并没有发生 - swagger ui screenshot

知道如何正确设置 Controller 描述吗?

谢谢, 马里奥

最佳答案

默认情况下不包括 Controller 的注释。 IncludeXmlComments 方法有一个版本,它采用 bool 值来指示是否应使用 Controller XML 注释。下面的代码来 self 的 Startup : ConfigureServices 方法。

原文:

var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);

新:

var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath, true);  // <== Added the true here, to show the controller description

关于c# - 如何在 ASP.NET Core Swagger (Swashbuckle.AspNetCore) 中定义 Controller 描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50511071/

相关文章:

c# - 表单类中的 stackoverflow 异常

c# - Nhibernate envers,使用依赖注入(inject)将用户添加到修订实体中

c# Entity Framework 为每个方法打开和关闭dbcontext实例

.net - Blazor Wasm - 如何从继承的组件更新基础组件?

http - 在 .Net 中将 HTTP 2 与 HttpClient 结合使用

swagger - 同一方法的两条路径

c# - 在 C# 中绘画有间隙

asp.net-core - 为什么 .Net Core 有自己的声明类型?

java - 如何在 Swagger 中将 Java8 LocalTime 显示为字符串?

具有相同代码的多个响应的 PHP swagger 注释