dotnet/aspnetcore

Incorrect OpenAPI definition when using FromForm with IEnumerable parameters

Open

#62,328 opened on 2025年6月12日

GitHub で見る
 (1 comment) (5 reactions) (0 assignees)C# (37,933 stars) (10,653 forks)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

コントリビューターガイド