Getting started
  • Why choose Go ( golang ) for web development?
  • Course outline
  • Language review
  • How to succeed
  • Miscellaneous resources
Templates
  • Understanding templates
  • Templating with concatenation
  • Understanding package text/template: parsing & executing templates
  • Passing data into templates
  • Variables in templates
  • Passing composite data structures into templates
  • Functions in templates
  • Pipelines in templates
  • Predefined global functions in templates
  • Nesting templates - modularizing your code
  • Passing data into templates & composition
  • Using methods in templates
  • Hands-on exercises
  • Using package html/template, character escaping, & cross-site scripting
Creating your own server
  • Understanding servers
  • TCP server - write to connection
  • TCP server - read from connection using bufio.Scanner
  • TCP server - read from & write to connection
  • TCP server - code a client
  • TCP server - rot13 & in-memory database
  • TCP server - HTTP request / response foundation hands-on exercise
  • TCP server - HTTP method & URI retrieval hands-on exercise
  • TCP server - HTTP multiplexer
Understanding net/http package
  • net/http package - an overview
  • Understanding & using ListenAndServe
  • Foundation of net/http: Handler, ListenAndServe, Request, ResponseWriter
  • Retrieving form values - exploring *http.Request
  • Retrieving other request values - exploring *http.Request
  • Exploring http.ResponseWriter - writing headers to the response
  • Review
Understanding routing
  • Understanding ServeMux
  • Disambiguation: func(ResponseWriter, *Request) vs. HandlerFunc
  • Third-party servemux - julien schmidt’s router
  • Hands-on exercises
  • Hands-on exercises - solutions #1
  • Hands-on exercises - solutions #2
Serving files
  • Serving a file with io.Copy
  • Serving a file with http.ServeContent & http.ServeFile
  • Serving a file with http.FileServer
  • Serving a file with http.FileServer & http.StripPrefix
  • Creating a static file server with http.FileServer
  • log.Fatal & http.Error
  • Hands-on exercises
  • Hands-on exercises - solutions
  • The http.NotFoundHandler
Deploying your site
  • Buying a domain - google domains
  • Deploying to google cloud
Creating state
  • State overview
  • Passing values through the URL
  • Passing values from forms
  • Uploading a file, reading the file, creating a file on the server
  • Enctype
  • Redirects - overview
  • Redirects - diagrams & documentation
  • Redirects - in practice
  • Cookies - overview
  • Cookies - writing and reading
  • Writing multiple cookies & hands-on exercise
  • Hands-on exercise solution: creating a counter with cookies
  • Deleting a cookie
Creating sessions
  • Sessions
  • Universally unique identifier - UUID
  • Your first session
  • Sign-up
  • Encrypt password with bcrypt
  • Login
  • Logout
  • Permissions
  • Expire session
Amazon Web Services
  • Overview
  • Creating a virtual server instance on AWS EC2
  • Hello World on AWS
  • Persisting an application
  • Hands-on Exercise
  • Hands-on Solution
  • Terminating AWS services
Relational Databases
  • Overview
  • Installing MySQL - Locally
  • Installing MySQL - AWS
  • Connect Workbench to MySQL on AWS
  • Go & SQL - Setup
  • Go & SQL - In Practice
Scaling On AWS
  • Overview of Load Balancers