簡體   English   中英

Swagger 文檔的動態摘要

[英]Dynamic Summary for Swagger documentation

在服務之間使用共享代碼時,嘗試為 .net 核心 swagger 中的文檔創建靈活的方式。 請看這個例子:

public abstract class Err
{
    /// <summary>
    /// The error x
    /// </summary>
    public abstract string Code { get; }
}

public class Err1 : Err
{
    public override string Code { get => "100"; }
}

public class Err2 : Err
{
    public override string Code { get => "200"; }
}

public class Err3 : Err
{
    public override string Code { get => "300"; }
}

[Route("api/test")]
[ProducesResponseType(typeof(string), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(Err), StatusCodes.Status400BadRequest)]
[ApiController]
public class TestController : ControllerBase
{
    [HttpGet]
    public ActionResult Get()
    {
        int i = (new Random().Next(1, 11));
        if (1 < 4)
            return BadRequest(new Err1());
        if (i < 7)
            return BadRequest(new Err2());
        return Ok("OK");
    }
}

這當然會產生一個 swagger 看起來像這樣:

在此處輸入圖像描述

我想要的是這樣的:

在此處輸入圖像描述

所以這里重要的是code=300 不包含在摘要中,因為它沒有在這個程序集中使用。

所以我一直在想的是;

  • 是否可以進行一些反思,找到所有正在使用的繼承類並將其寫入 XML(編譯時?)而不是普通的摘要部分?
  • 重寫 Swagger 如何閱讀摘要並編寫自己的代碼。
  • 你能連接一些 Swagger 中間件來處理這個所以它不會從 XML 讀取嗎?

如果反射部分不可能,當然下一個最好的辦法就是以某種方式硬編碼用於此特定服務的所有錯誤類的列表。

大家有什么想法嗎?

所以,對於第一部分,據我所知,不可能通過反射找出是否使用了 class :( 對於第二部分,如果你用 nswag 替換 swashbuckle,你實際上能夠擁有這個很好的“其中之一”-swagger UI 中的功能 :) 但就我而言,這還不夠,所以我想現在這是不可能的。

暫無
暫無

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

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