Skip to content

Validate with x-oapi-codegen-extra-tags do not work for query params #2232

@andre-marcos-perez

Description

@andre-marcos-perez

The generated code with x-oapi-codegen-extra-tags validation does not work for query params.

  • Version:

github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen v2.5.1

  • Definition:
paths:
  /v1/your/endpoint:
  get:
    - name: env
      in: query
      required: true
      schema:
      type: string
      enum:
        - dev
        - live
      x-oapi-codegen-extra-tags:
        validate: required,oneof=dev live
  • Generated code:
func (siw *ServerInterfaceWrapper) GetV1YourEndpoint(w http.ResponseWriter, r *http.Request) {

	// Parameter object where we will unmarshal all parameters from the context
	var params GetV1YourEndpointParams

	// ------------- Required query parameter "env" -------------

	if paramValue := r.URL.Query().Get("env"); paramValue != "" {

	} else {
		siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "env"})
		return
	}

	err = runtime.BindQueryParameter("form", true, true, "env", r.URL.Query(), &params.Env)
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "env", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler. GetV1YourEndpointParams(w, r, scheduleId, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions