Skip to content
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
Branch: master
Clone or download
sairoutine and thinkerou IsTerm flag should not be affected by DisableConsoleColor method. (#1802
)

* IsTerm flag should not be affected by DisableConsoleColor method.

* change public property to private
Latest commit b40d4c1 Mar 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github chore: update issue_implate (#1524) Aug 31, 2018
binding
examples
ginS Fix typos (#1625) Nov 5, 2018
internal/json chore: use internal/json (#1791) Mar 4, 2019
render issue_1721: fix render writeHeaders to make it the same as http.Heade… Feb 22, 2019
testdata chore(readme.md): fix invalid link (#1807) Mar 12, 2019
vendor Split examples to alone repo (#1776) Mar 1, 2019
.gitignore ci: break when test fail (#1671) Dec 5, 2018
.travis.yml Remove sudo setting from travis.yml (#1816) Mar 16, 2019
AUTHORS.md docs: add changelog for v1.3.0, update authors and version const (#1478) Aug 14, 2018
BENCHMARKS.md docs(benchmark): update benchmark data (#1035) Jul 19, 2017
CHANGELOG.md docs: add changelog for v1.3.0, update authors and version const (#1478) Aug 14, 2018
CODE_OF_CONDUCT.md docs(conduct): add code of conduct Jul 5, 2017
CONTRIBUTING.md update document format. (#964) Jul 2, 2017
LICENSE Add MIT license Jun 30, 2014
Makefile Split examples to alone repo (#1776) Mar 1, 2019
README.md Fix Japanese text hiragana -> kanji (#1812) Mar 14, 2019
auth.go remove hardcode instead of http status value (#1411) Jun 26, 2018
auth_test.go
benchmarks_test.go chore: use http.Status* instead of hard code (#1482) Aug 14, 2018
codecov.yml v1.1 (#751) Dec 3, 2016
context.go Added stream flag indicates if client disconnected in middle of strea… Mar 2, 2019
context_17.go Revert "context: inherits context cancelation and deadline from http.… Jan 9, 2019
context_17_test.go Revert "context: inherits context cancelation and deadline from http.… Jan 9, 2019
context_appengine.go Add license for some files (#940) Jun 12, 2017
context_test.go Extend context.File to allow for the content-dispositon attachments v… Mar 1, 2019
debug.go Make sure the debug log contains line breaks (#1650) Nov 22, 2018
debug_test.go Make silent debug info on tests (#1765) Feb 18, 2019
deprecated.go fix typo (#1103) Sep 8, 2017
deprecated_test.go Make silent debug info on tests (#1765) Feb 18, 2019
doc.go add doc.go (#970) Jul 4, 2017
errors.go
errors_test.go fix errcheck warnings (#1739) Jan 18, 2019
fs.go update comment (#1057) Aug 16, 2017
gin.go spell check (#1796) Mar 5, 2019
gin_integration_test.go fix travis freeze on concurrent test (#1761) Feb 4, 2019
gin_test.go Make silent debug info on tests (#1765) Feb 18, 2019
githubapi_test.go Fix context.Copy() race condition (#1020) Feb 26, 2019
go.mod chore: update go mod package (#1792) Mar 3, 2019
go.sum chore: update go mod package (#1792) Mar 3, 2019
logger.go IsTerm flag should not be affected by DisableConsoleColor method. (#1802 Mar 18, 2019
logger_test.go IsTerm flag should not be affected by DisableConsoleColor method. (#1802 Mar 18, 2019
middleware_test.go fix errcheck warnings (#1739) Jan 18, 2019
mode.go Use camel case instead of ALL_CAPS (#1419) Feb 22, 2019
mode_test.go Use camel case instead of ALL_CAPS (#1419) Feb 22, 2019
path.go
path_test.go add an edge case from httprouter (#1407) Jun 23, 2018
recovery.go spell check (#1796) Mar 5, 2019
recovery_test.go Make silent debug info on tests (#1765) Feb 18, 2019
response_writer.go flush operation will overwrite the origin status code (#1460) Aug 7, 2018
response_writer_1.7.go Add Pusher() function for support http2 server push (#1273) Jun 21, 2018
response_writer_1.8.go Add Pusher() function for support http2 server push (#1273) Jun 21, 2018
response_writer_test.go fix errcheck warnings (#1739) Jan 18, 2019
routergroup.go fix #1804 which is caused by calling middleware twice. (#1805) Mar 11, 2019
routergroup_test.go
routes_test.go fix #1804 which is caused by calling middleware twice. (#1805) Mar 11, 2019
test_helpers.go
tree.go improve panic information when a catch-all wildcard conflict occurs (#… Sep 21, 2018
tree_test.go support bind uri param (#1612) Nov 22, 2018
utils.go chore: add some annotations (#1544) Sep 15, 2018
utils_test.go chore: use http.Status* instead of hard code (#1482) Aug 14, 2018
version.go chore: add a version file includes gin version (#1549) Sep 17, 2018

README.md

Gin Web Framework

Build Status codecov Go Report Card GoDoc Join the chat at https://gitter.im/gin-gonic/gin Sourcegraph Open Source Helpers Release

Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.

The key features of Gin are:

  • Zero allocation router
  • Fast
  • Middleware support
  • Crash-free
  • JSON validation
  • Routes grouping
  • Error management
  • Rendering built-in
  • Extendable

For more feature details, please see the Gin website introduction.

Getting started

Getting Gin

The first need Go installed (version 1.6+ is required), then you can use the below Go command to install Gin.

$ go get -u github.com/gin-gonic/gin

For more installation guides such as vendor tool, please check out Gin quickstart.

Running Gin

First you need to import Gin package for using Gin, one simplest example likes the follow example.go:

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // listen and serve on 0.0.0.0:8080
}

And use the Go command to run the demo:

# run example.go and visit 0.0.0.0:8080/ping on browser
$ go run example.go

Benchmarks

Please see all benchmarks details from Gin website.

Benchmark name (1) (2) (3) (4)
BenchmarkGin_GithubAll 30000 48375 0 0
BenchmarkAce_GithubAll 10000 134059 13792 167
BenchmarkBear_GithubAll 5000 534445 86448 943
BenchmarkBeego_GithubAll 3000 592444 74705 812
BenchmarkBone_GithubAll 200 6957308 698784 8453
BenchmarkDenco_GithubAll 10000 158819 20224 167
BenchmarkEcho_GithubAll 10000 154700 6496 203
BenchmarkGocraftWeb_GithubAll 3000 570806 131656 1686
BenchmarkGoji_GithubAll 2000 818034 56112 334
BenchmarkGojiv2_GithubAll 2000 1213973 274768 3712
BenchmarkGoJsonRest_GithubAll 2000 785796 134371 2737
BenchmarkGoRestful_GithubAll 300 5238188 689672 4519
BenchmarkGorillaMux_GithubAll 100 10257726 211840 2272
BenchmarkHttpRouter_GithubAll 20000 105414 13792 167
BenchmarkHttpTreeMux_GithubAll 10000 319934 65856 671
BenchmarkKocha_GithubAll 10000 209442 23304 843
BenchmarkLARS_GithubAll 20000 62565 0 0
BenchmarkMacaron_GithubAll 2000 1161270 204194 2000
BenchmarkMartini_GithubAll 200 9991713 226549 2325
BenchmarkPat_GithubAll 200 5590793 1499568 27435
BenchmarkPossum_GithubAll 10000 319768 84448 609
BenchmarkR2router_GithubAll 10000 305134 77328 979
BenchmarkRivet_GithubAll 10000 132134 16272 167
BenchmarkTango_GithubAll 3000 552754 63826 1618
BenchmarkTigerTonic_GithubAll 1000 1439483 239104 5374
BenchmarkTraffic_GithubAll 100 11383067 2659329 21848
BenchmarkVulcan_GithubAll 5000 394253 19894 609
  • (1): Total Repetitions achieved in constant time, higher means more confident result
  • (2): Single Repetition Duration (ns/op), lower is better
  • (3): Heap Memory (B/op), lower is better
  • (4): Average Allocations per Repetition (allocs/op), lower is better

Middlewares

You can find many useful Gin middlewares at gin-contrib.

Documentation

All documentation is available on the Gin website.

Examples

A number of ready-to-run examples demonstrating various use cases of Gin on the Gin examples repository.

Users

Gin website lists some awesome projects made with Gin web framework.

Contributing

Gin is the work of hundreds of contributors. We appreciate your help!

Please see CONTRIBUTING for details on submitting patches and the contribution workflow.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.