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 71af9885d015..282adf4f3f12 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 @@ -528,13 +528,24 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{/isFile}} {{/isFormParam}} {{#isHeaderParam}} - {{paramName}}Param := getPointerOrNilIfEmpty(r.Header.Get("{{baseName}}")) + {{paramName}}ParamValues := r.Header.Values("{{baseName}}") {{#required}} - if {{paramName}}Param == nil { + if len({{paramName}}ParamValues) == 0 { c.errorHandler(w, r, &RequiredError{"{{baseName}}"}, nil) return } {{/required}} + {{#isArray}} + {{paramName}}Param := {{paramName}}ParamValues + {{/isArray}} + {{^isArray}} + {{#required}} + {{paramName}}Param := getPointer({{paramName}}ParamValues[0]) + {{/required}} + {{^required}} + {{paramName}}Param := getPointerOrNilIfEmpty(r.Header.Get("{{baseName}}")) + {{/required}} + {{/isArray}} {{/isHeaderParam}} {{#isBodyParam}} {{paramName}}Param := {{^isArray}}&{{/isArray}}{{dataType}}{} diff --git a/samples/openapi3/server/petstore/go/go-petstore/go/api_pet.go b/samples/openapi3/server/petstore/go/go-petstore/go/api_pet.go index 89bdce65a647..6409f7745075 100644 --- a/samples/openapi3/server/petstore/go/go-petstore/go/api_pet.go +++ b/samples/openapi3/server/petstore/go/go-petstore/go/api_pet.go @@ -130,6 +130,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) { c.errorHandler(w, r, &ParsingError{Err: err}, nil) return } + apiKeyParamValues := r.Header.Values("api_key") apiKeyParam := getPointerOrNilIfEmpty(r.Header.Get("api_key")) result, err := c.service.DeletePet(r.Context(), *petIdParam, apiKeyParam) // If an error occurred, encode the error with the status code diff --git a/samples/server/petstore/go-api-server/go/api_pet.go b/samples/server/petstore/go-api-server/go/api_pet.go index 532da3e3e500..894353b2324a 100644 --- a/samples/server/petstore/go-api-server/go/api_pet.go +++ b/samples/server/petstore/go-api-server/go/api_pet.go @@ -156,6 +156,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) { c.errorHandler(w, r, &ParsingError{Err: err}, nil) return } + apiKeyParamValues := r.Header.Values("api_key") apiKeyParam := getPointerOrNilIfEmpty(r.Header.Get("api_key")) result, err := c.service.DeletePet(r.Context(), *petIdParam, apiKeyParam) // If an error occurred, encode the error with the status code diff --git a/samples/server/petstore/go-chi-server/go/api_pet.go b/samples/server/petstore/go-chi-server/go/api_pet.go index ef6d933d13c7..0071aae19d25 100644 --- a/samples/server/petstore/go-chi-server/go/api_pet.go +++ b/samples/server/petstore/go-chi-server/go/api_pet.go @@ -155,6 +155,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) { c.errorHandler(w, r, &ParsingError{Err: err}, nil) return } + apiKeyParamValues := r.Header.Values("api_key") apiKeyParam := getPointerOrNilIfEmpty(r.Header.Get("api_key")) result, err := c.service.DeletePet(r.Context(), *petIdParam, apiKeyParam) // If an error occurred, encode the error with the status code