-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
NSwag should take into account parameter position even if GenerateOptionalParameters is false #2891
Copy link
Copy link
Open
Labels
Description
NSwag/src/NSwag.CodeGeneration.CSharp/Models/CSharpOperationModel.cs
Lines 53 to 82 in 895e0ca
| var parameters = GetActualParameters(); | |
| if (settings.GenerateOptionalParameters) | |
| { | |
| // TODO: Move to CSharpControllerOperationModel | |
| if (generator is CSharpControllerGenerator) | |
| { | |
| parameters = parameters | |
| .OrderBy(p => p.Position ?? 0) | |
| .OrderBy(p => !p.IsRequired) | |
| .ThenBy(p => p.Default == null).ToList(); | |
| } | |
| else | |
| { | |
| parameters = parameters | |
| .OrderBy(p => p.Position ?? 0) | |
| .OrderBy(p => !p.IsRequired) | |
| .ToList(); | |
| } | |
| } | |
| Parameters = parameters | |
| .Select(parameter => | |
| new CSharpParameterModel(parameter.Name, GetParameterVariableName(parameter, _operation.Parameters), | |
| ResolveParameterType(parameter), parameter, parameters, | |
| _settings.CodeGeneratorSettings, | |
| _generator, | |
| _resolver)) | |
| .ToList(); | |
| } |
NSwag/src/NSwag.CodeGeneration.TypeScript/Models/TypeScriptOperationModel.cs
Lines 39 to 54 in 895e0ca
| var parameters = GetActualParameters(); | |
| if (settings.GenerateOptionalParameters) | |
| { | |
| parameters = parameters | |
| .OrderBy(p => p.Position ?? 0) | |
| .OrderBy(p => !p.IsRequired) | |
| .ToList(); | |
| } | |
| Parameters = parameters | |
| .Select(parameter => | |
| new TypeScriptParameterModel(parameter.Name, | |
| GetParameterVariableName(parameter, _operation.Parameters), ResolveParameterType(parameter), | |
| parameter, parameters, _settings, _generator, resolver)) | |
| .ToList(); |
Parameters should be ordered by position before this if, otherwise Position is meaningless, because optional parameters are always last.
Use case: for backward compatibility with Open API v2 I want to specify
x-positionforrequestBodyin v3, but body is optional. I can't do it required and I can't make it first without specifyingGenerateOptionaParameterstotrue, which will move it to last, because optional parameters should be last, so it meaningless.
Reactions are currently unavailable