A fast, cross-platform and efficient web framework with robust set of well-designed features, written entirely in Go.
Go-speedo focuses on speed and state of the art technology.
Go-speedo started as a fork of Iris
Table of contents
- Feature overview
- Third-party middleware list
The only requirement is the Go Programming Language, at least version 1.8
Dependencies are shipped in the vendor folder.
$ go get -u github.com/go-speedo/go-speedo
Examples --they cover each feature.
Godocs --for deep understanding.
|high performance||TODO add to speedtest|
|Compression||gzip TODO add Documentation|
|http2 push||TODO add Documentation|
|letsencrypt certificates||TODO add Documentation|
|Json, JsonP, XML, Forms, Markdown||write-json read-json read-form|
|Logger Engines||file-logger request-logger|
|Subdomains and Grouping||subdomains|
⭐️and watch the project, will notify you about updates. 🌎publish an article or share a tweet about Go-Speedo.
- Create an Issue
Third Party Middleware
Go-Speedo has its own middleware form of
func(ctx context.Context) but it's also compatible with all
net/http middleware forms. See here.
I'm sure that each of you have, already, found his own favorite list but here's a small list of third-party handlers:
|tollbooth||Didip Kerabat||Generic middleware to rate-limit HTTP requests. Example|
|goth||Mark Bates||OAuth, OAuth2 authentication. Example|
|binding||Matt Holt||Data binding from HTTP requests into structs|
|cloudwatch||Colin Steele||AWS cloudwatch metrics middleware|
|csp||Awake Networks||Content Security Policy (CSP) support|
|delay||Jeff Martinez||Add delays/latency to endpoints. Useful when testing effects of high latency|
|New Relic Go Agent||Yadvendar Champawat||Official New Relic Go Agent (currently in beta)|
|gorelic||Jingwen Owen Ou||New Relic agent for Go runtime|
|JWT||Auth0||Middleware checks for a JWT on the
|logrus||Dan Buch||Logrus-based logger|
|onthefly||Alexander Rødseth||Generate TinySVG, HTML and CSS on the fly|
|permissions2||Alexander Rødseth||Cookies, users and permissions|
|prometheus||Rene Zbinden||Easily create metrics endpoint for the prometheus instrumentation tool|
|render||Cory Jacobsen||Render JSON, XML and HTML templates|
|RestGate||Prasanga Siripala||Secure authentication for REST API endpoints|
|secure||Cory Jacobsen||Middleware that implements a few quick security wins|
|stats||Florent Messa||Store information about your web application (response time, etc.)|
|VanGoH||Taylor Wrobel||Configurable AWS-Style HMAC authentication middleware|
|xrequestid||Andrea Franz||Middleware that assigns a random X-Request-Id header to each request|
|digits||Bilal Amarni||Middleware that handles Twitter Digits authentication|
Feel free to put up a PR your middleware!
httptest package is your way for end-to-end HTTP testing, it uses the httpexpect library created by our friend, gavv.
A simple test is located to ./_examples/intermediate/httptest/main_test.go
Go-Speedo started as a fork of https://github.com/kataras/iris as Iris was aquired by a company and shortly after some repositories where deleted.
We believe in Open-source and therefore we forked the repository and keep this project alive.
Furthermore we want to enhance Go-Speedo further and make it the fastest Webserver available.
go-speedo is maintained by the go-speedo organisation @go-speedo
The author of Iris (from which go-speedo was forked) was @kataras.
Each new release is pushed to the master. It stays there until the next version. When a next version is released then the previous version goes to its own branch with
gopkg.in as its import path (and its own vendor folder), in order to keep it working "for-ever".
Should I upgrade?
Developers are not forced to use the latest Go-Speedo version, they can use any version in production, they can update at any time they want.
Testers should upgrade immediately, if you're willing to use Go-Speedo in production you can wait a little more longer, transaction should be as safe as possible.
Where can I find older versions?
Each Go-Speedo version is independent. Only bug fixes, Router's API and experience are kept.
Previous versions can be found at releases page.
Unless otherwise noted, the source files are distributed under the BSD-3-Clause License found in the LICENSE file.
Note that some third-party packages that you use with Go-Speedo may requires different license agreements.