• Stars
    star
    112
  • Rank 312,163 (Top 7 %)
  • Language
    Go
  • License
    Other
  • Created almost 10 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Melon 🍈 - Dropwizard-like web service framework in Go (golang)

Melon Build Status GoDoc

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.