OpenAPI Generator Go / Gin. How to generate parameter components?

50 Views Asked by At

OpenApi Generator version 7.1.0 | OpenApi Spec 3.0.3

REQUIREMENT 1: Generate Go structs from Open API Spec parameters components with correct field tags:

I want generated code to look like this:

type Request struct {
    PersonId 
    OrgId
}

type PersonId struct {
    PersonId string `uri:"id" binding:"required"`
}

type OrgId struct {
    OrgId string `form:"orgId" binding:"required"`
}

The struct fields are required so we use gins validation like so:

func (ctrl Controller) GetPersonById(ctx *gin.Context) {

    var req generated.Request
    iderr := ctx.ShouldBindUri(&req.PersonId)
    orgerr := ctx.ShouldBindQuery(&req.OrgId)

    if orgerr != nil || iderr != nil {
        ctx.JSON(ctrl.Make400(ctx, errors.New("Parameters are required")))
        return
    }

//etc ...

}

PROBLEM: Using the go-gin-server generator my parameters components do not get generated. I cannot find configuration to do this. I have found an issue regarding it for java generator: https://github.com/OpenAPITools/openapi-generator/pull/10934

Below is the current command

openapi-generator generate \
    --input-spec api-spec.yml \
    --generator-name go-gin-server \
    --output generated

.

.

.

REQUIREMENT 2: If no solution for requirement 1, can I remove json field tags from generation on schemas components?

PROBLEM 2: A workaround to use schema component contains json field tags. This then fails the Gin validation:

type Request struct {
    Person `json:"person"
    Org    `json:"org"
}

type PersonId struct {
    PersonId string `json:"id" binding:"required"`
}

type OrgId struct {
    OrgId string `json:"orgId" binding:"required"`
}
0

There are 0 best solutions below