mikelue.github.io

When I worked for Cepave, I developed a simple framework(base on Gin framework, as Go language) to ease authoring of web service.

The framework let you bind web parameters by Struct tag:

import (
  gmvc "github.com/Cepave/open-falcon-backend/common/gin/mvc"
)

mvcBuilder := gmvc.NewMvcBuilder(gmvc.NewDefaultMvcConfig())

engine.GET(
  "/your_get_service",
  mvcBuilder.BuildHandler(func(
    v *struct {
      Name string `mvc:"query[name]"`
      Age int16 `mvc:"query[age]"`
      SessionId string `mvc:"header[owl-session-id]"`
    }
  ) string {
      // Access HTTP parameters by v.Name, v.SessionId ...

      return "OK"
  }),
)

While you are doing type conversion and validation, this framework can “inject” services for you:

engine.GET(
  "/your_get_service",
  mvcBuilder.BuildHandler(func(
		validator *validator.Validate,
		convSrv otype.ConversionService,
    v *struct {
      Name string `mvc:"query[name]"`
      Age int16 `mvc:"query[age]"`
      SessionId string `mvc:"header[owl-session-id]"`
    }
  ) string {
      // Access HTTP parameters by v.Name, v.SessionId ...

      return "OK"
  }),
)