Skip to content

About

Converts GO struct definitions to OpenAPI schema definitions using AST

Resources

Stars

5 stars

Watchers

1 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GO struct to OpenAPI spec converter

This repository can be used to converts GO struct definitions to OpenAPI schema definitions using AST. By using the AST all struct fields with comments can be parsed. Additionally, the library parses also references of custom type in different packages. For parsing struct level comments go/doc is being used.

Config

  • To change the property name struct tags can be used e.g. json.
  • To change the struct name the comment directive @title can be used.
  • To only generate for a set of struct regular expression can be used to filtger struct names, e.g. *HandlerResponse.

Install

To update the library to the latest version, use go get -u github.com/mrahbar/gostruct2openapi.

Use

generator := NewOpenapiGenerator(regexp.MustCompile("TestBaseStruct"), "json")
specs, err := generator.DocumentStruct("github.com/mrahbar/gostruct2openapi/doc/testdata")
if err != nil {
    log.Fatal(err)
}
//TODO use specs variable, e.g. by writting it to a file

Example

Given the following struct

//@title Test Base Struct
//Test Base description
type TestBaseStruct struct {
	//baseFieldB comment
	baseFieldB string
	//BaseFieldB comment
	BaseFieldB string `json:"otherBaseFieldB"`
	//BaseFieldC comment
	BaseFieldC float64
	//BaseFieldD comment
	BaseFieldD bool
}

will result in the following output

{
    "description": "Test Base description",
    "id": "Test Base Struct",
    "properties": {
        "otherBaseFieldB": {
            "description": "BaseFieldB comment",
            "type": "string"
        },
        "BaseFieldC": {
            "description": "BaseFieldC comment",
            "type": "number"
        },
        "BaseFieldD": {
            "description": "BaseFieldD comment",
            "type": "boolean"
        }
    }
}

For more examples check out the test and the corresponding test data

Additional sources

About

Converts GO struct definitions to OpenAPI schema definitions using AST

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages