网站的数据库怎么建立,广告创意设计是什么,网站建设用什么技术,成都分想设计公司网站使用SWAGGER和ASP.NET CORE设置可选路由参数根据OpenAPI 3.0#xff0c;这是不可能的。但是#xff0c;如果您真的希望成为现实呢#xff1f;您是否必须解决并允许您的Swagger文档出错#xff1f;我在这里向您展示如何使用Swagger和ASP.NET Core设置可选的路由参数。等等这是不可能的。但是如果您真的希望成为现实呢您是否必须解决并允许您的Swagger文档出错我在这里向您展示如何使用Swagger和ASP.NET Core设置可选的路由参数。等等什么是Swagger在偶然的情况下您导航到了这篇文章却不知道Swagger是什么我如何快速介绍一下“ Swagger是描述REST API的格式的一组规则因此它可用于在产品经理测试人员和开发人员之间共享文档……” – Swagger入门。Swagger的一种常见用法是通过Swagger UI提供一个界面。Swagger UI允许您可视化API的资源并与之交互。它比Postman或类似工具更具针对性。设置方案现在我们有了一个基本的想法Swagger是什么我将建立一个人为的方案。让我们假设我们有一个提供博客摘要的API。该API可以根据许多条件返回摘要所有条件均从URL提供。在此特定用例中我正在运行Swashbuckle.AspNetCore v5.3.3。此版本使用OpenApi v3.x。据我了解2.x中的工作原理有所不同。您可以在MSDN或GitHub上的Swashbuckle上阅读。人为设计的BlogSummaryController其Get操作具有{day}的可选route参数让我们继续运行该站点看看Swagger为我们创造了什么。默认Swagger生成您会注意到即使我定义{day?}了可选的路由选择器Swagger仍在告诉我们它是必需的。好了那我该如何选择路由参数我想有几种方法可以解决这个问题。就是说我发现的方法似乎效果很好可以根据需要在全局和单独应用。因此事不宜迟让我们将其IOperationFilter作为起点。操作过滤器使我们可以对操作文档进行后期修改。这正是我们需要的因为我们需要撤销对可选路线参数的限制。IOperationFilter使可选的路由参数在Swagger中实际上是可选的在我的ReApplyOptionalRouteParameterOperationFilter课程中我们首先测试该方法是否具有“ Route”属性。如果是这样我们然后检查URL中是否具有可选的route参数。如果不是这样我们就不会理会任何更改。另一方面如果我们确实有一个我将使用一些正则表达式来提取密钥。现在我们有了键我们在操作上找到了一个匹配参数最后应用了一些更改以使其成为可选键。应用IOperationFilter因此现在我们有了一个OperationFilter我们需要实际应用它。您可以通过两种方式进行操作。第一种方法是在中全局应用它SwaggerConfiguration。请注意全局执行此操作将需要Apply方法中的某些逻辑以我的示例为例以跳过不需要的地方应用它。否则可能会给您带来一些痛苦。全局应用OperationFilter另一种方法是对OperationFilter要修改的每个动作单独应用。为了在本地应用它您只需使用SwaggerOperationFilterattribute并指定类型。请注意您需要Swashbuckle.AspNetCore.Annotations对该属性使用nuget包。如果您全局应用它那么您也不应在本地应用它。使用SwaggerOperationFilter在本地应用OperationFilter使用这两种方法我们现在可以看到Swagger不再需要该可选参数。世界是一个更好的地方。带有可选路线参数的新Swagger文档附加阅读早些时候我提到了OpenAPI 3不支持可选路由参数的内容。在谷歌搜索如何解决此问题时我在Swashbuckle GitHub上遇到了几个“问题”。在第一个有一个参考的意见深其指向一个OpenAPI的specifiation文件。其要点是必须*必填路径中的变量。我遇到的第二个实际上引用了第一个并给了我解决方法的想法。存储库所有者domaindrivendev的评论重申OpenAPI规范不允许这样做。所以你有它。我向您展示了一种强制其运行的方法即使规范完全表明这样做并不可行。无论您的内心渴望如何您都可以利用这些知识来做。我选择使用它。结论Swagger和Swagger UI是记录和可视化API的整洁方法。Swashbuckle.AspNetCore是使用.NET Core生成该文档的好方法。即使ASP.NET Core允许使用可选的路由参数OpenAPI规范也会在您的路径中禁止使用可选的值。我向您展示了一种解决方法使您的文档与实现相匹配。我们使用来完成IOperationFilter。该示例中的所有代码都可以在GitHub上找到。