代码之家  ›  专栏  ›  技术社区  ›  KJSR

虚张声势的文件缺少信息

  •  0
  • KJSR  · 技术社区  · 5 年前

    我似乎无法理解为什么我的狂妄自大的doc UI会丢失控制器中每个get和post的模型模式细节?

    我在跑步 SwashBuckle 对于ASP.NET core nuget包v4.0.1,即使升级到最新的包,也不会显示架构详细信息?(我的WebAPI是在Core 2.2中构建的)

    我只浏览了那些夸张的w.r.t配置文档,没有任何东西指引我去哪里可以得到要显示的附加信息?

    经过一些研究,我发现如果我使用以下属性

    [ProducesResponseType(typeof(Models.Customer), StatusCodes.Status200OK)]
    [HttpGet("{Id}/customer")]
    public async Task<IActionResult> GetCustomer(int Id)
    

    显示器 Schemas 块在招摇的用户界面,这正是我想要的。但是我不想经历 我的每个控制器Get/Post方法并添加此属性。它总是在没有这个的情况下工作,但是什么能阻止它在开箱即用呢?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Métoule    5 年前

    Swashbuckle基于动作的返回类型创建模型。你有几个选择:

    • 您可以返回实际类型(例如。 public async Task<Models.Customer> GetCustomer(int Id)

    • 如果您返回 IActionResult ,您可以使用 ProducesResponseType 属性

    • 您可以返回 ActionResult<T> 它的工作原理就像 IActionResult公司 但实际类型

    您可以查看文档以了解更多信息: https://docs.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-3.1

        2
  •  0
  •   TemaTre    5 年前

    所以,您的方法是return IActionResult这是很常见的事情,编译器无法找到将返回的实际结果。这就是为什么你应该使用ProducesResponseType。

    如果你想使用IActionResult和Asp.NETMVC控制器,这种方法很适合你。

    但另一点是:你真的需要Asp.Net MVC控制器吗?如果您需要Asp.NETMVC控制器,为什么要创建夸张的文档?这是矛盾。

    Swagger需要创建公共Api文档。增加外部程序员使用API的可能性。在这种情况下,最好使用Api控制器。

    如果需要使用具有自动调整等功能的Asp.NETMVC控制器,则不需要创建Swagger,因为它应该在您自己的项目中使用。