# Functions

Decode reads the body of an HTTP request looking for a JSON document.
IsShutdown checks to see if the shutdown error is contained in the specified error value.
NewApp constructs an App to handle a set of routes.
NewRequestError wraps a provided error with an HTTP status code.
NewShutdownError returns an error that causes the framework to signal a graceful shutdown.
Respond converts a Go value to JSON and sends it to the client.
RespondError sends an error reponse back to the client.

# Constants

KeyValues is how request values or stored/retrieved.

# Structs

App is the entrypoint into our application and what controls the context of each request.
Error is used to pass an error during the request through the application with web specific context.
ErrorResponse is the form used for API responses from failures in the API.
FieldError is used to indicate an error with a specific request field.
Values carries information about each request.

# Type aliases

Handler is the signature used by all application handlers in this service.
Middleware is a function designed to run some code before and/or after another Handler.