You're reading a sample of this book.
Get the full version here
.
Let's Go Further
› Contents
‹
Previous
·
Contents
·
Next
›
Contents
1. Introduction
1.1. Prerequisites
2. Getting Started
2.1. Project Setup and Skeleton Structure
2.2. A Basic HTTP Server
2.3. API Endpoints and RESTful Routing
3. Sending JSON Responses
3.1. Fixed-Format JSON
3.2. JSON Encoding
3.3. Encoding Structs
3.4. Formatting and Enveloping Responses
3.5. Advanced JSON Customization
3.6. Sending Error Messages
4. Parsing JSON Requests
4.1. JSON Decoding
4.2. Managing Bad Requests
4.3. Restricting Inputs
4.4. Custom JSON Decoding
4.5. Validating JSON Input
5. Database Setup and Configuration
5.1. Setting up PostgreSQL
5.2. Connecting to PostgreSQL
5.3. Configuring the Database Connection Pool
6. SQL Migrations
6.1. An Overview of SQL Migrations
6.2. Working with SQL Migrations
7. CRUD Operations
7.1. Setting up the Movie Model
7.2. Creating a New Movie
7.3. Fetching a Movie
7.4. Updating a Movie
7.5. Deleting a Movie
8. Advanced CRUD Operations
8.1. Handling Partial Updates
8.2. Optimistic Concurrency Control
8.3. Managing SQL Query Timeouts
9. Filtering, Sorting, and Pagination
9.1. Parsing Query String Parameters
9.2. Validating Query String Parameters
9.3. Listing Data
9.4. Filtering Lists
9.5. Full-Text Search
9.6. Sorting Lists
9.7. Paginating Lists
9.8. Returning Pagination Metadata
10. Rate Limiting
10.1. Global Rate Limiting
10.2. IP-based Rate Limiting
10.3. Configuring the Rate Limiters
11. Graceful Shutdown
11.1. Sending Shutdown Signals
11.2. Intercepting Shutdown Signals
11.3. Executing the Shutdown
12. User Model Setup and Registration
12.1. Setting up the Users Database Table
12.2. Setting up the Users Model
12.3. Registering a User
13. Sending Emails
13.1. SMTP Server Setup
13.2. Creating Email Templates
13.3. Sending a Welcome Email
13.4. Sending Background Emails
13.5. Graceful Shutdown of Background Tasks
14. User Activation
14.1. Setting up the Tokens Database Table
14.2. Creating Secure Activation Tokens
14.3. Sending Activation Tokens
14.4. Activating a User
15. Authentication
15.1. Authentication Options
15.2. Generating Authentication Tokens
15.3. Authenticating Requests
16. Permission-based Authorization
16.1. Requiring User Activation
16.2. Setting up the Permissions Database Table
16.3. Setting up the Permissions Model
16.4. Checking Permissions
16.5. Granting Permissions
17. Cross Origin Requests
17.1. An Overview of CORS
17.2. Demonstrating the Same-Origin Policy
17.3. Simple CORS Requests
17.4. Preflight CORS Requests
18. Metrics
18.1. Exposing Metrics with Expvar
18.2. Creating Custom Metrics
18.3. Request-level Metrics
18.4. Recording HTTP Status Codes
19. Building, Versioning and Quality Control
19.1. Creating and Using Makefiles
19.2. Managing Environment Variables
19.3. Quality Controlling Code
19.4. Module Proxies and Vendoring
19.5. Building Binaries
19.6. Managing and Automating Version Numbers
20. Deployment and Hosting
20.1. Creating a Digital Ocean Droplet
20.2. Server Configuration and Installing Software
20.3. Deployment and Executing Migrations
20.4. Running the API as a Background Service
20.5. Using Caddy as a Reverse Proxy
21. Appendices
21.1. Managing Password Resets
21.2. Creating Additional Activation Tokens
21.3. Authentication with JSON Web Tokens
21.4. JSON Encoding Nuances
21.5. JSON Decoding Nuances
21.6. Request Context Timeouts
22. Feedback