Melon
Lightweight Go framework for building web services, inspired by Dropwizard.
Overview
Melon is a partial port of Dropwizard in Go. Besides of builtin Go packages, it utilizes a number of libraries in order to build a server stack quickly, including:
- mux: a popular HTTP multiplexer.
- gol: a simple hierarchical logging API.
- metrics: a minimalist instrumentation library.
- validator: an extensible value validator.
Features supported:
- Commands: for controlling your application from command line.
- Bundles: for modularizing your application.
- Managed Objects: for starting and stopping your components.
- HealthChecks: for checking health of your application in production.
- Metrics: for monitoring and statistics.
- Tasks: for administration.
- Resources: for RESTful endpoints.
- Filters: for injecting middlewares.
- Logging: for understanding behaviors of your application.
- Configuration: for application parameters.
- Banner: for fun. :)
- and more...
Examples
See example
INFO [2015-02-04T12:00:01.289+10:00] melon/server: starting
______
/\ __\______
/..\ \ \ \
/....\_____\ \ \
\..../ / / /\_____\
\../ / / /./ __/
\/_____/./__ /
\/_____/
INFO [2015-02-04T12:00:01.289+10:00] melon/assets: registering AssetsBundle for path /static/
DEBUG [2015-02-04T12:00:01.289+10:00] melon/server: resources = [*views.JSONProvider,*views.XMLProvider,*views.Resource,*views.Resource,*views.Resource,*views.Resource,*views.Resource]
INFO [2015-02-04T12:00:01.289+10:00] melon/server: endpoints =
GET /static/* (http.HandlerFunc)
GET /users (*views.httpHandler)
POST /users (*views.httpHandler)
GET /user/{name} (*views.httpHandler)
PUT /user/{name} (*views.httpHandler)
DELETE /user/{name} (*views.httpHandler)
INFO [2015-02-04T12:00:01.290+10:00] melon/admin: tasks =
POST /tasks/gc (*core.gcTask)
POST /tasks/log (*logging.logTask)
POST /tasks/rmusers (*main.usersTask)
DEBUG [2015-02-04T12:00:01.290+10:00] melon/admin: health checks = [UsersHealthCheck]
INFO [2015-02-04T12:00:01.290+10:00] melon/server: listening :8080
INFO [2015-02-04T12:00:01.290+10:00] melon/server: listening :8081
Contributing
Comments, issues and pull requests are always welcome.