Giter VIP home page Giter VIP logo

go-greenlight-api's Introduction

go-greenlight

Assimiliating Go application patterns

This little practice follows the book, Let's Go Further by @alexedwards

  1. Introduction
  • 1.1. Prerequisites
  1. Getting Started
  • 2.1. Project Setup and Skeleton Structure
  • 2.2. A Basic HTTP Server
  • 2.3. API Endpoints and RESTful Routing
  1. 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
  1. 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
  1. Database Setup and Configuration
  • 5.1. Setting up PostgreSQL
  • 5.2. Connecting to PostgreSQL
  • 5.3. Configuring the Database Connection Pool
  1. SQL Migrations
  • 6.1. An Overview of SQL Migrations
  • 6.2. Working with SQL Migrations
  1. 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
  1. Advanced CRUD Operations
  • 8.1. Handling Partial Updates
  • 8.2. Optimistic Concurrency Control
  • 8.3. Managing SQL Query Timeouts
  1. 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
  1. Rate Limiting
  • 10.1. Global Rate Limiting
  • 10.2. IP-based Rate Limiting
  • 10.3. Configuring the Rate Limiters
  1. Graceful Shutdown
  • 11.1. Sending Shutdown Signals
  • 11.2. Intercepting Shutdown Signals
  • 11.3. Executing the Shutdown
  1. 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
  1. 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
  1. 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
  1. Authentication
  • 15.1. Authentication Options
  • 15.2. Generating Authentication Tokens
  • 15.3. Authenticating Requests
  1. 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
  1. 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
  1. Metrics
  • 18.1. Exposing Metrics with Expvar
  • 18.2. Creating Custom Metrics
  • 18.3. Request-level Metrics
  • 18.4. Recording HTTP Status Codes
  1. 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
  1. 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
  1. 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
  1. Feedback

go-greenlight-api's People

Contributors

jade-itworkswhy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.