5 ms·
A Comparison of Go Web Frameworks (2014)
- zkirill 11y agoYou may also want to take a look at beego (https://github.com/astaxie/beego https://github.com/astaxie/beego). It introduces a lot of workflow features on top of routing. Also, you may have an easier time with it if you can read Chinese.
- mattmc 11y agoAlso Maracon (https://github.com/Unknwon/macaron https://github.com/Unknwon/macaron), Negroni (https://github.com/codegangsta/negroni https://github.com/codegangsta/negroni), and Goji (https://github.com/zenazn/goji https://github.com/zenazn/goji). Negroni is from the creator of Martini, Goji is apparently high in antioxidants, but I'm partial to Macaron. I also use a homegrown Gorilla-based library at work...there's more than one way to skin this cat, that's for sure.
- beefsack 11y agoArticles on Go web frameworks all end up at the same conclusion. The Go standard library is so strong around web servers it's hard to recommend anything else.
- tptacek 11y agoIt's not entirely that simple. The problem isn't that net/http is so amazing that it's silly to replace it; it's that the replacements aren't yet up to the challenge --- by which I mean, none of them are yet so much of a win that the cost of losing compatibility with net/http outweighs the benefits. Writing full-featured web apps in Golang in 2015 is still a lot like writing a Sinatra app was 8 years ago. It feels great at first, but you quickly realize that you're just building a half-assed version of Rails.
- bojo 11y agoAn alternative way to look at it would be "you are only building the 20% of Rails you actually need." I've never been a fan of full-fledged frameworks and prefer the more pragmatic method of only pulling in components that I need though.
- juliangregorian 11y agohttps://github.com/rails-api/rails-api#why-use-rails-for-json-apis https://github.com/rails-api/rails-api#why-use-rails-for-jso...
- bojo 11y agohttp://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2-go.html http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2...
- tptacek 11y agoGoing from 30 servers to 2 sounds like something whose cost savings might add up to as much as 100 hours of developer time.
- juliangregorian 11y agoThat's cool. I bet they could reduce it to 0.15 servers by rewriting it in C. They probably would have drastically reduced the number of servers even if the rewrite was still in ruby, having much better understanding around the runtime requirements. Ruby also seems like a questionable choice in the first place for such a service. Perhaps a prototype. Nobody is pretending that MRI Ruby is the most performant runtime you can find, but that's just not an issue for 99% of web stacks.
- interactiv 11y ago> The Go standard library is so strong around web servers it's hard to recommend anything else. The http packages provides the bare minimum. A serious app requires way more features than what is provided,a router than handles route variables, a middleware stack, a proper context, a proper session mechanism if one writes a website... So it's normal people write their own libraries on top of it ( like mine @ gopkg.in/interactiv/expresso.v0 ,still alpha )
- kylequest 11y agoGorilla does include a "context" library: http://www.gorillatoolkit.org/pkg/context http://www.gorillatoolkit.org/pkg/context
- de_dave 11y agoMoving forward, of course, it's preferable to use the official context package: http://godoc.org/golang.org/x/net/context http://godoc.org/golang.org/x/net/context
- kylequest 11y agoIt complements Gorilla context. It's not a replacement because it doesn't solve the context problem for middleware (no way to pass net/context from middleware to your handler code).
- tptacek 11y agoThis is pretty old, especially in "Go Web Framework" terms.
- juliangregorian 11y agoObligatory s/martini/negroni comment here.
- deleted 11y ago[deleted]
- socceroos 11y agoExactly, the author himself stated as much.
- wyc 11y agoMy personal favorite is alice: https://github.com/justinas/alice https://github.com/justinas/alice It's not very much code (only ~90 lines inc. comments), but I think it establishes a pattern that makes everything very straightforward from authentication to logging to runtime analysis. Plays very nicely with gorilla. I think the more you let net/http shine, the better.
- cat9 11y agoI've been using go-json-rest, which is by way of "just enough on top of net/http to make APIs easier." https://ant0ine.github.io/go-json-rest/ https://ant0ine.github.io/go-json-rest/ Gorilla is useful, but more for its range of standalone components than as a framework. https://github.com/gorilla https://github.com/gorilla Then you'll want database-related packages like redigo and gorp. https://github.com/garyburd/redigo https://github.com/garyburd/redigo https://github.com/go-gorp/gorp https://github.com/go-gorp/gorp
- Everlag 11y agoI have been using go-restful which lets you wrap documentation into the code. It generates swagger docs which are very nice to deal with. https://github.com/emicklei/go-restful https://github.com/emicklei/go-restful
- mattmc 11y agoGorp is nice, although I prefer the sqlx-based flavor, Modl (https://github.com/jmoiron/modl https://github.com/jmoiron/modl).
- deleted 11y ago[deleted]
- cat9 11y agoI'm still kind of on the fence about this. I like a lot of the choices Modl makes as a fork of Gorp, but it has significantly fewer users, particularly in the case of e.g. modl-migrate vs. sql-migrate.
- deleted 11y ago[deleted]
- dang 11y agohttps://news.ycombinator.com/item?id=7785991 https://news.ycombinator.com/item?id=7785991