Popularity
4.5
Stable
Activity
2.5
Growing
132
5
15

Programming language: Go
License: MIT License
Tags: Web Frameworks    
Latest version: v0.1.0

alien alternatives and similar packages

Based on the "Web Frameworks" category.
Alternatively, view alien alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of alien or a related project?

Add another 'Web Frameworks' Package

README

Alien Coverage Status Build Status GoDoc Go Report Card

Alien is a lightweight http router( multiplexer) for Go( Golang ), made for humans who don't like magic.

Documentation docs

Features

  • fast ( see the benchmarks, or run them yourself)
  • lightweight ( just [a single file](alien.go) read all of it in less than a minute)
  • safe( designed with concurrency in mind)
  • middleware support.
  • routes groups
  • no external dependency( only the standard library )

Motivation

I wanted a simple, fast, and lightweight router that has no unnecessary overhead using the standard library only, following good practices and well tested code( Over 90% coverage)

Installation

go get github.com/gernest/alien

Usage

normal static routes


package main

import (
    "log"
    "net/http"

    "github.com/gernest/alien"
)

func main() {
    m := alien.New()
    m.Get("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("hello world"))
    })
    log.Fatal(http.ListenAndServe(":8090", m))
}

visiting your localhost at path / will print hello world

named params


package main

import (
    "log"
    "net/http"

    "github.com/gernest/alien"
)

func main() {
    m := alien.New()
    m.Get("/hello/:name", func(w http.ResponseWriter, r *http.Request) {
        p := alien.GetParams(r)
        w.Write([]byte(p.Get("name")))
    })
    log.Fatal(http.ListenAndServe(":8090", m))
}

visiting your localhost at path /hello/tanzania will print tanzania

catch all params

package main

import (
    "log"
    "net/http"

    "github.com/gernest/alien"
)

func main() {
    m := alien.New()
    m.Get("/hello/*name", func(w http.ResponseWriter, r *http.Request) {
        p := alien.GetParams(r)
        w.Write([]byte(p.Get("name")))
    })
    log.Fatal(http.ListenAndServe(":8090", m))
}

visiting your localhost at path /hello/my/margicl/sheeplike/ship will print my/margical/sheeplike/ship

middlewares

Middlewares are anything that satisfy the interface func(http.Handler)http.Handler . Meaning you have thousands of middlewares at your disposal, you can use middlewares from many golang http frameworks on alien(most support the interface).


package main

import (
    "log"
    "net/http"

    "github.com/gernest/alien"
)

func middleware(h http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("hello middlware"))
    })
}

func main() {
    m := alien.New()
    m.Use(middleware)
    m.Get("/", func(_ http.ResponseWriter, _ *http.Request) {
    })
    log.Fatal(http.ListenAndServe(":8090", m))
}

visiting your localhost at path / will print hello middleware

groups

You can group routes

package main

import (
    "log"
    "net/http"

    "github.com/gernest/alien"
)

func main() {
    m := alien.New()
    g := m.Group("/home")
    m.Use(middleware)
    g.Get("/alone", func(w http.ResponseWriter, _ *http.Request) {
        w.Write([]byte("home alone"))
    })
    log.Fatal(http.ListenAndServe(":8090", m))
}

visiting your localhost at path /home/alone will print home alone

Contributing

Start with clicking the star button to make the author and his neighbors happy. Then fork the repository and submit a pull request for whatever change you want to be added to this project.

If you have any questions, just open an issue.

Author

Geofrey Ernest @gernesti on twitter

Licence

MIT see [LICENSE](LICENSE)


*Note that all licence references and agreements mentioned in the alien README section above are relevant to that project's source code only.