Skip to content

Commit 5c0d5a9

Browse files
authored
Don't generate RequestBody for parameters when disabledInferredBody is true (#47659) (#47807)
1 parent 1ae68f1 commit 5c0d5a9

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/OpenApi/src/OpenApiGenerator.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private OpenApiOperation GetOperation(string httpMethod, MethodInfo methodInfo,
7878
Description = metadata.GetMetadata<IEndpointDescriptionMetadata>()?.Description,
7979
Tags = GetOperationTags(methodInfo, metadata),
8080
Parameters = GetOpenApiParameters(methodInfo, pattern, disableInferredBody),
81-
RequestBody = GetOpenApiRequestBody(methodInfo, metadata, pattern),
81+
RequestBody = GetOpenApiRequestBody(methodInfo, metadata, pattern, disableInferredBody),
8282
Responses = GetOpenApiResponses(methodInfo, metadata)
8383
};
8484

@@ -251,15 +251,15 @@ private static void GenerateDefaultResponses(Dictionary<int, (Type?, MediaTypeCo
251251
}
252252
}
253253

254-
private OpenApiRequestBody? GetOpenApiRequestBody(MethodInfo methodInfo, EndpointMetadataCollection metadata, RoutePattern pattern)
254+
private OpenApiRequestBody? GetOpenApiRequestBody(MethodInfo methodInfo, EndpointMetadataCollection metadata, RoutePattern pattern, bool disableInferredBody)
255255
{
256256
var hasFormOrBodyParameter = false;
257257
ParameterInfo? requestBodyParameter = null;
258258

259259
var parameters = PropertyAsParameterInfo.Flatten(methodInfo.GetParameters(), ParameterBindingMethodCache);
260260
foreach (var parameter in parameters)
261261
{
262-
var (bodyOrFormParameter, _, _) = GetOpenApiParameterLocation(parameter, pattern, false);
262+
var (bodyOrFormParameter, _, _) = GetOpenApiParameterLocation(parameter, pattern, disableInferredBody);
263263
hasFormOrBodyParameter |= bodyOrFormParameter;
264264
if (hasFormOrBodyParameter)
265265
{

src/OpenApi/test/OpenApiGeneratorTests.cs

+12
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,18 @@ static void ValidateParameter(OpenApiOperation operation, string expectedName)
928928
ValidateParameter(GetOpenApiOperation(([FromHeader(Name = "headerName")] string param) => ""), "headerName");
929929
}
930930

931+
[Fact]
932+
public void DoesNotGenerateRequestBodyWhenInferredBodyDisabled()
933+
{
934+
var operation = GetOpenApiOperation((string[] names) => { }, httpMethods: new[] { "GET" });
935+
936+
var parameter = Assert.Single(operation.Parameters);
937+
938+
Assert.Equal("names", parameter.Name);
939+
Assert.Equal(ParameterLocation.Query, parameter.In);
940+
Assert.Null(operation.RequestBody);
941+
}
942+
931943
private static OpenApiOperation GetOpenApiOperation(
932944
Delegate action,
933945
string pattern = null,

0 commit comments

Comments
 (0)