Swashbuckle / swagger文档丢失信息

问题描述 投票:0回答:2

我似乎无法理解为什么我的招摇的文档UI缺少控制器中每个Gets和Posts的Model Schema详细信息?

我正在为ASP.NET核心nuget程序包v4.0.1运行SwashBuckle,即使升级到最新程序包后也没有任何显示架构详细信息的信息? (我的WebAPI是在Core 2.2中构建的)

我仅通过招摇过的文档进行了w.r.t的配置,没有什么可引导我到达可以显示其他信息的位置?

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

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

正是在我想要的swagger UI中显示Schemas块。但是我不想经历我的每个Controller Get / Post方法都添加了此属性。它总是可以在没有此功能的情况下工作,但是有什么可能阻止此功能开箱即用?

c# asp.net-core asp.net-core-webapi swagger-ui swashbuckle
2个回答
0
投票

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

如果要使用IActionResult和Asp.Net MVC控制器,则可以使用这种方式。

但是还有一点:您真的需要Asp.Net MVC控制器吗?并且,如果您需要Asp.Net MVC控制器,为什么要创建庞大的文档?这件事是矛盾的。

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

如果您需要使用具有Autorization等功能的Asp.Net MVC控制器,则无需创建Swagger,因为它应在您自己的项目中使用。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.