Swashbuckle Swagger UI:如何从 xml 注释中的参数中删除必需的

tdm*_*ler 6 c# swagger-ui swashbuckle

我想更改控制器中某些参数的必需属性。我使用 XML 注释来链接到 Swagger。

示例图像

Ant*_*ace 5

在继续之前,请仔细考虑您的参数。该参数是否真的需要,您的输入是否反映了这一点?是否有一个合理的默认值,在这种情况下预期的行为是什么?根据您的回答,您可能更喜欢以下两种解决方案之一:

选项 1:可选参数

如果accessTokenID有一个合理的默认值,您可以在 API 签名上指定该值,Swashbuckle 将根据需要停止识别参数。

例如,id在此示例中,将在 Swagger UI 中解析为可选:

public HttpResponseMessage Get(int id = 0)
Run Code Online (Sandbox Code Playgroud)

如果您的参数确实不是必需的,则可空类型可能更有意义(例如,如果您列出空输入的所有值):

public HttpResponseMessage Get(int? id = null)
Run Code Online (Sandbox Code Playgroud)

选项 2:SwaggerDefaultValue 属性

Swashbuckle GitHub 中的一个解决方案创建了一个 IOperationFilter 来处理 SwaggerDefaultValue 属性并将它们应用到 Swagger UI。如果您希望需要参数,但希望在 Swagger UI 中设置一些默认值,则可以使用此解决方案。

例如,这将在 Swagger UI 文本字段中显示“0”而不是“(必需) ”:

[SwaggerDefaultValue("id", "0")]
public HttpResponseMessage Get(int id)
Run Code Online (Sandbox Code Playgroud)

  • 选项 #1 中的第一个示例仍然有效吗?它曾经对我有用,但是在一些 Swashbuckle 更新或其他更新之后,这些现在按照要求显示在生成的 Swagger 文件中。 (3认同)
  • 第一个选项似乎不适用于模型绑定(如果参数在单独的类中) (2认同)