问题标签 [swashbuckle.aspnetcore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3505 浏览

c# - 为 swagger 的“试用”指定示例请求

有没有办法指定招摇的示例请求?甚至可能是多个?

Try it out按钮仅显示通用值,例如:

为了

当您必须首先编辑所有值时,使用大型对象变得非常困难。我知道我可以使用 Postman,我也这样做,但是能够使用 swagger 创建多个好看且有用的示例将非常好。

0 投票
1 回答
1525 浏览

c# - Swagger 在 ASP.CORE 3 中为字典生成不正确的 URL

当从查询字符串中提取的模型具有字典作为其属性之一时,Swagger 会生成不正确的 URL。如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式,而不自动生成?尝试使用 Swashbuckle 和 NSwag。

控制器

输入模型 - 查询字符串

Swagger UI在查询模型上显示“条件”属性的这种格式

Swagger 生成的 URL - Open API v2 - 不会绑定到“条件”

Swagger 生成的 URL - Open API v3 - 不会绑定到“条件”

自定义 URL - 按预期工作并初始化“条件”{ "UserId", "1" }

问题

如何强制 Swagger 为PropertyName[Key]=ValueDictionary 类型的属性呈现 URL?

替代问题

不是解决方案,但如果我以这种方式为输入参数定义默认值,Swagger 会创建正确的 URL。

URL 现在正确并正确绑定到模型

有没有办法更改 Swagger 中显示的字典输入类型的默认值?

0 投票
2 回答
5125 浏览

asp.net-core - 如何在 .NET Core 中实现处理自定义属性的 Swashbuckle IOperationFilter

我已经实现了一个Swashbuckle.Swagger.IOperationFilter来处理自定义属性,如下所述:https ://stackoverflow.com/a/52948376/13087

我现在想做类似的事情Swashbuckle.AspNetCore 5.0.0

该类似乎ApiDescription没有GetControllerAndActionAttributes在原始实现中使用的扩展方法。我尝试通过查看它的源代码来重新实现它,但它使用成员ApiDescription.ActionDescriptor.ControllerDescriptor并且ApiDescription.ActionDescriptor.GetCustomAttributes<TAttribute>我似乎不存在于 .NET Core 中。

任何人都可以通过向我展示如何获取自定义控制器和操作属性来帮助我入门IOperationFilter吗?

更新 看起来 .NET Framework 实现有一个ActionDescriptor实际上是ReflectedActionDescriptor。这个类有一个构造函数,它接受一个MethodInfo用于查找属性的构造函数。

但我看不到任何方法来获得MethodInfo.NET Core 实现Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor

0 投票
1 回答
582 浏览

asp.net-core - 如何将 XML 文件从 NuGet 包发布到 ASP.NET Core 2.1 应用程序

MyWebApiApp我有一个引用 NuGet 包(例如)的 ASP.NET Core 2.1 应用程序(例如MyPackage),其中包含 Web API 中使用的模型。这些模型使用 XML 注释进行记录,生成的 XML 文件与 NuGet 包一起发布(在 中lib\netstandard2.0\MyPackage.xml)。

我想在 Swagger 中使用 XML 文档,所以我SwaggerGenOptions在 Startup.cs 中添加了以下内容:

到现在为止还挺好。当我从 Visual Studio 2017 运行应用程序时,它成功地在 NuGet 包缓存中找到 XML 文档文件并生成 Swagger 文档。

现在我想发布网站。当我发布网站时:

  • 应用程序 ( ) 的 XML 文档文件MyWebApiApp.xml被复制到发布文件夹(我已包含<GenerateDocumentationFile>true</GenerateDocumentationFile>在 中MyWebApiApp.csproj)。
  • 但是我的 NuGet 包 ( ) 中的 XML 文档文件MyPackage.xml没有被复制。

我尝试将这篇博文中的咒语添加到MyWebApiApp.csproj,但没有成功。

0 投票
1 回答
128 浏览

c# - Creating a "latest" version of swagger documentation via Swashbuckle

I'm working on a public facing API, using Swashbuckle.AspNetCore & ReDoc for documentation with Microsoft.AspNetCore.Mvc.Versioning for versioning our controllers using attributes.

We want to have a swagger document that shows all of the latest versions of our endpoints to make it easier for people coming to the API for the first time to pick the correct version.

My current attempt was to create a 'v0' and apply that version to all of the latest versions of the controllers. I then used an operation filter to replace 'v0' with whatever the latest version was:

This works most of the time, but sometimes it doesn't seem to kick in, and you end up with a bunch of URLs with 'v0' in. The filter runs, but doesn't seem to be reflected in the resulting swagger document.

Is there some better way to achieve what we are aiming for here? I attempted to write something using DocInclusionPredicate but I couldn't seem to get what I wanted.

0 投票
1 回答
899 浏览

swagger - 如何使用 asp.net 核心 web api 中的 Swashbuckle 记录要在 swagger ui 中显示的包装响应

我在做一个ASP.NET Core 3.1web api 项目。我Swashbuckle.AspNetCore 5.0.0用于记录我的 API。事情进展顺利。但是,由于我的 api 使用中间件来包装每个响应以保持一致性,因此我无法生成响应类型。我无法在我的招摇用户界面中生成正确的响应类型。

这是一个简单的例子,

我的行动方法:

正如我所提到的,该项目具有响应中间件,它将包装所有响应,如下面的格式所示,

因此,我的招摇用户界面中的响应值不匹配。

根据 swagger ui 显示的响应模式示例[ProducesResponseType(200, Type = typeof(IEnumerable<WeatherForecast>))]

在此处输入图像描述

但实际包装的响应看起来像,

在此处输入图像描述

是否可以使用Swashbuckle.AspNetCore 5.0.0. 请帮助我。

0 投票
1 回答
376 浏览

swagger - Swashbuckle 使所有路由参数对于在 asp.net core 3.1 api swagger ui 中具有相同动词但有多个路由的端点都是强制性的

我正在开发asp.net core 2.2项目并升级到asp.net core 3.1并升级Swashbuckle.AspNetCore5.0.0. 升级后,我可以看到 swagger 生成的端点发生了变化。

我有[HttpDelete]两个不同路由的端点,如下所示:

[HttpDelete("{id}")]

id这里应该只需要参数。但是这里idanotherId参数也被标记为必需。这是错误的

在此处输入图像描述

[HttpDelete("{id}/some/{anotherId}")]

id和参数在这里都anotherId应该是必需的。这是对的。

在此处输入图像描述

这是我的Startup.cs

配置服务:

配置:

生成的招摇使anotherId两条路线都成为强制性的。以前可不是这样的。我尝试添加Name到两条路线,但仍然失败。请协助我错在哪里。

0 投票
1 回答
1133 浏览

api - 使用 Swashbuckle V5 从代码生成 swagger.json

我正在使用 Swashbuckle AspNetCore v4.xx 并升级到 v5.1.xx 但是我使用的代码不再工作了,因为缺少“SwaggerContractResolver”类。

我尝试的目标是在我的 RESTfull API 的代码中生成 swagger.json :

我怎样才能像 v4 一样使用新版本的 Swashbuckle AspnetCore 来做到这一点?

0 投票
2 回答
3857 浏览

sql-server - “FromSql”操作的结果中不存在所需的列:。FromSqlInterpolated

[前言]

当我将我的 api 从 .netcore2.1 升级到 .netcore3.1 时,我发现我需要大幅更改我的实体框架代码。

我没有意识到我的远程数据库中的存储过程中有一个错误,这在我的 .netcore2.1 代码中没有表达出来。

我遇到的错误消息并没有将我指向检查存储过程内部的方向。如果搜索错误消息对某人有帮助,我会留下我的问题的最终形式。

[问题]

我有以下代码来调用返回整数的存储过程

该代码在服务器端单元测试中工作,但在通过 api 或通过 SwaggerUI 调用时失败

connect 是我的 DbContext 包含

我按照建议创建了一个虚拟视图,这样我就不会在我的数据库中得到不需要的表。

并且有

调用堆栈是

注意我已经大量编辑了这个问题,因为有一次我让 api 工作,但不再工作。

我发现我必须使用 .ToList() 否则出现错误

System.InvalidOperationException:FromSqlRaw 或 FromSqlInterpolated 是使用不可组合的 SQL 调用的,并且查询在其上构成。考虑AsEnumerable在 FromSqlRaw 或 FromSqlInterpolated 方法之后调用以在客户端执行组合。

[更新]

我弹出以下代码并没有失败

所以下一步是尝试制作一个新的存储过程

或者,也许它是数据库版本..

有趣的是单元测试失败,除非我有

在正在测试的项目中引用。即使我没有明确使用它。

这种情况下的错误消息是

我尝试将我的代码更改为

但是我的单元测试出错了

[更新]

远程存储过程使用结果集返回数据。

0 投票
1 回答
805 浏览

c# - C#: Swagger/Swashbuckle - 使用“AND”连接安全方案

我有一个 ASP.NET Core Api,它需要为一个操作使用多个身份验证方案。我正在尝试通过在 Swagger UI 中显示所有必需的身份验证方案来记录这些操作。因此,我使用Swashbuckle.AspNetCore (5.1.0)库来OpenApiSecurityRequirement动态OpenApiOperation添加IOperationFilter

此外,我使用SwaggerGenOptions来注册所有可能的方案:

除了 SwaggerOR在 UI 中使用连接器外,一切正常:

在此处输入图像描述

有没有办法使用AND连接器配置 Swagger?

任何帮助将不胜感激!