diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java index d204fe4246a..9dca0e0e048 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java @@ -115,6 +115,15 @@ public class CodegenOperation { return nonEmpty(bodyParams); } + /** + * Check if there's at least one optional body parameter + * + * @return true if optional body parameter exists, false otherwise + */ + public boolean getHasOptionalBodyParam() { + return nonEmpty(bodyParams) && nonEmpty(optionalParams) && bodyParams.stream().anyMatch(optionalParams::contains); + } + /** * Check if there's at least one query parameter * diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index 54b0292fc30..fbec5932724 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -410,6 +410,7 @@ public class GoServerCodegen extends AbstractGoCodegen { private void addConditionalImportInformation(OperationsMap operations) { boolean hasPathParams = false; boolean hasBodyParams = false; + boolean hasOptionalBodyParams = false; for (CodegenOperation op : operations.getOperations().getOperation()) { if (op.getHasPathParams()) { @@ -418,10 +419,14 @@ public class GoServerCodegen extends AbstractGoCodegen { if (op.getHasBodyParam()) { hasBodyParams = true; } + if (op.getHasOptionalBodyParam()) { + hasOptionalBodyParams = true; + } } additionalProperties.put("hasPathParams", hasPathParams); additionalProperties.put("hasBodyParams", hasBodyParams); + additionalProperties.put("hasOptionalBodyParams", hasOptionalBodyParams); } diff --git a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache index 309405baab6..b390633971a 100644 --- a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache @@ -6,12 +6,10 @@ import ( {{#hasBodyParams}} "encoding/json" {{/hasBodyParams}} - {{#isBodyParam}} - {{^required}} + {{#hasOptionalBodyParams}} "errors" "io" - {{/required}} - {{/isBodyParam}} + {{/hasOptionalBodyParams}} "net/http" "strings" {{#imports}} "{{import}}"