Skip to content

Commit

Permalink
Don't generate RequestBody for parameters when disabledInferredBody i…
Browse files Browse the repository at this point in the history
…s true (#47659) (#47807)
  • Loading branch information
captainsafia committed May 8, 2023
1 parent 1ae68f1 commit 5c0d5a9
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/OpenApi/src/OpenApiGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ private OpenApiOperation GetOperation(string httpMethod, MethodInfo methodInfo,
Description = metadata.GetMetadata<IEndpointDescriptionMetadata>()?.Description,
Tags = GetOperationTags(methodInfo, metadata),
Parameters = GetOpenApiParameters(methodInfo, pattern, disableInferredBody),
RequestBody = GetOpenApiRequestBody(methodInfo, metadata, pattern),
RequestBody = GetOpenApiRequestBody(methodInfo, metadata, pattern, disableInferredBody),
Responses = GetOpenApiResponses(methodInfo, metadata)
};

Expand Down Expand Up @@ -251,15 +251,15 @@ private static void GenerateDefaultResponses(Dictionary<int, (Type?, MediaTypeCo
}
}

private OpenApiRequestBody? GetOpenApiRequestBody(MethodInfo methodInfo, EndpointMetadataCollection metadata, RoutePattern pattern)
private OpenApiRequestBody? GetOpenApiRequestBody(MethodInfo methodInfo, EndpointMetadataCollection metadata, RoutePattern pattern, bool disableInferredBody)
{
var hasFormOrBodyParameter = false;
ParameterInfo? requestBodyParameter = null;

var parameters = PropertyAsParameterInfo.Flatten(methodInfo.GetParameters(), ParameterBindingMethodCache);
foreach (var parameter in parameters)
{
var (bodyOrFormParameter, _, _) = GetOpenApiParameterLocation(parameter, pattern, false);
var (bodyOrFormParameter, _, _) = GetOpenApiParameterLocation(parameter, pattern, disableInferredBody);
hasFormOrBodyParameter |= bodyOrFormParameter;
if (hasFormOrBodyParameter)
{
Expand Down
12 changes: 12 additions & 0 deletions src/OpenApi/test/OpenApiGeneratorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -928,6 +928,18 @@ static void ValidateParameter(OpenApiOperation operation, string expectedName)
ValidateParameter(GetOpenApiOperation(([FromHeader(Name = "headerName")] string param) => ""), "headerName");
}

[Fact]
public void DoesNotGenerateRequestBodyWhenInferredBodyDisabled()
{
var operation = GetOpenApiOperation((string[] names) => { }, httpMethods: new[] { "GET" });

var parameter = Assert.Single(operation.Parameters);

Assert.Equal("names", parameter.Name);
Assert.Equal(ParameterLocation.Query, parameter.In);
Assert.Null(operation.RequestBody);
}

private static OpenApiOperation GetOpenApiOperation(
Delegate action,
string pattern = null,
Expand Down

0 comments on commit 5c0d5a9

Please sign in to comment.