Skip to content
/ gen Public

Gen generates efficient web routing source code and documentation from annotations

License

Notifications You must be signed in to change notification settings

wzshiming/gen

Repository files navigation

Gen - Tools for generating source code for microservices

Just write normal functions, and Gen generates efficient routing source code and documentation for it Because the source code is generated, none of this affects runtime performance
The differences caused by each change in the tool are shown directly in the generated source code
generating clients is also supported

Build Status Go Report Card GitHub license

Examples

'#' is the annotation, the annotation is the golang tag syntax, the only difference here is '#' wraps not '`'.

// ItemService #path:"/item/"#
type ItemService struct {}

// Create a Item #route:"POST /"#
func (s *ItemService) Create(item *Item) (err error) {}

// Update the Item #route:"PUT /{item_id}"#
func (s *ItemService) Update(itemID int /* #name:"item_id"# */, item *Item) (err error) {}

// Delete the Item #route:"DELETE /{item_id}"#
func (s *ItemService) Delete(itemID int /* #name:"item_id"# */) (err error) {}

// Get the Item #route:"GET /{item_id}"#
func (s *ItemService) Get(itemID int /* #name:"item_id"# */) (item *ItemWithID, err error) {}

// List of the Item #route:"GET /"#
func (s *ItemService) List(offset, limit int) (items []*ItemWithID, err error) {}
  1. Install gen tool go get -v github.com/wzshiming/gen/cmd/gen
  2. Add gen tool to $PATH
  3. Start it gen run github.com/wzshiming/gen-examples/service/...
  4. Open http://127.0.0.1:8080/swagger/?url=./openapi.json# with your browser

Examples

Or try to quickly build services from scratch

  1. Make a directory mkdir -p $(go env GOPATH)/src/gentest
  2. Change directory cd $(go env GOPATH)/src/gentest/
  3. Define models
cat > models.go <<EOF
package gentest
type Gentest struct {
    Name string \`json:"name"\`
    Age  int    \`json:"age"\`
}
EOF
  1. Generated from CRUD template gen crud -t mock -n Gentest
  2. Start it GO111MODULE=off gen run gentest

Supported

License

Pouch is licensed under the MIT License. See LICENSE for the full license text.