dotnet/aspnetcore

Incorrect OpenAPI definition when using FromForm with IEnumerable parameters

Open

#62,328 创建于 2025年6月12日

在 GitHub 查看
 (1 评论) (5 反应) (0 负责人)C# (37,933 star) (10,653 fork)batch import
area-minimalfeature-openapihelp wanted

描述

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

I'm using .NET 9 OpenAPI support. With the following endpoint:

app.MapPost("/api/documents", ([FromForm] int[] values) =>
{
    return TypedResults.Ok();
});

I get the following definition:

"requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "values": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "format": "int32"
                    }
                  }
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "values": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "format": "int32"
                    }
                  }
                }
              }
            }
          },
          "required": true
        }

If, instead, I change the type to IEnumerable:

app.MapPost("/api/documents", ([FromForm] IEnumerable<int> values) =>
{
    return TypedResults.Ok();
});

The OpenAPI definition becomes:

"requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "required": true
        },

.NET Version

9.0.301

贡献者指南