-
Notifications
You must be signed in to change notification settings - Fork 17.7k
LearnServerProgramming
This page links to resources for learning about server programming in Go - both web services and mobile backends. The items are organized into sections by topic.
- Read Writing Web Applications with the Go standard library
- Read Building Web Applications in Go from the author of the Negroni and Martini webserver toolkits.
- Read Build a Web Application With Go from the author of the BeeGo web framework
- Read Building Your Own Web Framework in Go a 5-part series.
- Code A Tour of Go: Web Servers and HTTP Handlers
- Watch Go: code that grows with grace
- Download a full working 3-tier application example from the Sourcegraph Team.
A topic you will see discussed frequently is "middleware". If you're not familiar with that term, we suggest you start out by reading a few of these articles:
- Writing Handsome Golang Middleware 2015-05-05
- Middleware in Go: Best practices and examples 2014-11-13
- Custom Handlers Part 1 - Avoiding Globals, Part 2 - Error Handling 2014-07-16
- Making and Using HTTP Middleware 2014-10-21
- Writing HTTP Middleware in Go 2013-10-09
Before you decide to adopt a third party web framework or toolkit, keep in mind that the Go standard library provides all of the tools you need to build a sophisticated, modern web application. Keeping with Go's preference for simplicity and composability over complexity and magic, we suggest you see how far the standard library can take you.
If you decide you need a bit more infrastructure, start by looking at some of the toolkits and libraries available.
- Gorilla Toolkit
- Negroni Toolkit - Idiomatic HTTP Middleware for Go
- Echo Framework - Fast and Unfancy
- Goji Web Microframework
- Go Craft Middleware
- Go RESTful - Toolkit for RESTful service APIs
- Kite Micro-service framework
- Alice - Painless middleware chaining for Go
- YAM - Yet Another Mux
- GinGonic
- Revel Web Framework
- BeeGo Framework
- Frodo - Go mini web framework inspired by Laravel(php), Slim(php) and ExpressJS(node.js)
- Utron - Lightweight MVC framework for web applications.
- Package net/http provides HTTP client and server implementations.
- Package encoding/json implements encoding and decoding of JSON objects as defined in RFC 4627.
- Package net/rpc provides access to the exported methods of an object across a network or other I/O connection.
- Package os/exec runs external commands.
- Package text/template implements data-driven templates for generating textual output.
- Package html/template implements data-driven templates for generating HTML output safe against code injection.
- Read Profiling Go Programs
- Read Arrays, slices (and strings): The mechanics of 'append'
- Read the Frequently Asked Questions (FAQ), especially
- Package bufio implements buffered I/O.
- Package runtime/pprof writes runtime profiling data in the format expected by the pprof visualization tool.
- Package net/http/pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
- Package expvar provides a standardized interface to public variables, such as operation counters in servers.
- Package flag implements command-line flag parsing.
- Package log implements a simple logging package.
- Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
- Package os provides a platform-independent interface to operating system functionality.
- Package path/filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths.
- Package database/sql provides a generic interface around SQL (or SQL-like) databases.
- Read Go, Cloud Endpoints and App Engine, Part 1, Part 2
- Read Google Cloud Platform: Go Runtime Environment
- Watch Go and the Google Cloud Platform
- Read Go on App Engine: tools, tests, and concurrency
- Get Google Cloud Platform Go Libraries
- Read Deploying Go servers with Docker
- Search packages for Google Cloud or gcloud
- Search packages for App Engine or GAE
- The aws-sdk-go repository provides automatically generated AWS clients in Go. It has official support from Amazon.
- Package goamz enables Go programs to interact with the Amazon Web Services.
- Search packages for AWS or Amazon services
- Microsoft OpenTech's azure-sdk-for-go provides a Golang package that makes it easy to consume and manage Microsoft Azure Services.
- Search packages for Azure
- Rackspace's gophercloud is a Golang SDK for working with OpenStack clouds.
- Search packages for Openstack or Rackspace