Skip to content

johnwilson/restapi

Repository files navigation

REST-API

REST-API adds a layer on top of go-restful to make it faster to get up and running. It uses some code from the excellent goji project and integrates a few other libraries to facilitate database access, logging, graceful shutdown etc...

Usage example

package main

import (
	"github.com/emicklei/go-restful"
	"github.com/jinzhu/gorm"
	"github.com/johnwilson/restapi"
	"github.com/johnwilson/restapi/plugins"
	"github.com/johnwilson/restapi/system"
)

type MainController struct {
	system.Controller
}

func (ct *MainController) Register(container *restful.Container) {
	ct.Controller.Register(container)

	ws := new(restful.WebService)
	ws.Route(ws.GET("/").To(ct.DBVersion))
	container.Add(ws)
}

func (ct *MainController) DBVersion(r *restful.Request, w *restful.Response) {
	orm := ct.GetPlugin("orm", r).(*gorm.DB)
	res := orm.Raw("SELECT sqlite_version();")
	var version string
	res.Row().Scan(&version)
	msg := map[string]string{"db": version}
	w.WriteJson(msg, "application/json")
}

func main() {
	app := restapi.NewApplication("config.toml")

	// plugins
	app.RegisterPlugin("orm", new(plugins.Gorm))

	ct := MainController{}
	ct.Register(app.Container)
	app.Start()
}

Code source and libraries

About

Restful project template based on go-restful

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages