封面
版权信息
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Why subscribe?
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
Getting Started with REST API Development
Types of web services
REST API
Characteristics of REST services
REST verbs and status codes
GET
POST PUT and PATCH
DELETE and OPTIONS
Cross-Origin Resource Sharing (CORS)
Types of status codes
2xx family (successful)
3xx family (redirection)
4xx family (client error)
5xx family (server error)
Rise of REST API with Single Page Applications
Old and new ways of data flow in SPA
Why Go for REST API development?
Setting up the project and running the development server
Demystifying GOPATH
Building our first service – finding the Roman numeral
Breaking down the code
Live reloading the application with supervisord and Gulp
Monitoring your Go web server with supervisord
Installing supervisord
Using Gulp for creating auto code compiling and server reloading
Understanding the gulpfile
Summary
Handling Routing for Our REST Services
Getting the code
Understanding Go's net/http package
Running the code
ServeMux a basic router in Go
Running the code
Adding multiple handlers using ServeMux
Running the code
Introducing httprouter a lightweight HTTP router
Installation
Program explanation
Building the simple static file server in minutes
Introducing Gorilla Mux a powerful HTTP router
Installation
Fundamentals of Gorilla Mux
Reverse mapping URL
Custom paths
Path Prefix
Strict Slash
Encoded paths
Query-based matching
Host-based matching
SQL injections in URLs and ways to avoid them
Creating a basic API layout for URL shortening services
Summary
Working with Middleware and RPC
Getting the code
What is middleware?
Creating a basic middleware
Multiple middleware and chaining
Painless middleware chaining with Alice
Using Gorilla's Handlers middleware for Logging
What is RPC?
Creating an RPC server
Creating an RPC client
JSON RPC using Gorilla RPC
Summary
Simplifying RESTful Services with Popular Go Frameworks
Getting the code
go-restful a framework for REST API creation
CRUD operations and SQLite3 basics
Building a Metro Rail API with go-restful
Design specification
Creating database models
Building RESTful APIs with the Gin framework
Building a RESTful API with Revel.go
Summary
Working with MongoDB and Go to Create REST APIs
Getting the code
Introduction to MongoDB
Installing MongoDB and using the shell
Working with the Mongo shell
Introducing mgo a MongoDB driver for Go
RESTful API with Gorilla Mux and MongoDB
Boosting the querying performance with indexing
Designing an e-commerce data document model
Summary
Working with Protocol Buffers and GRPC
Getting the code
Introduction to protocol buffers
Protocol buffer language
Scalar values
Enumerations and repeated fields
Compiling a protocol buffer with protoc
Introduction to GRPC
Bidirectional streaming with GRPC
Summary
Working with PostgreSQL JSON and Go
Getting the code
Installing the PostgreSQL database
Adding users and databases in PostgreSQL
pq a pure PostgreSQL database driver for Go
Implementing a URL shortening service using Postgres and pq
Defining the Base62 algorithm
Exploring the JSON store in PostgreSQL
GORM a powerful ORM for Go
Implementing the e-commerce REST API
Summary
Building a REST API Client in Go and Unit Testing
Getting the code
Plan for building a REST API client
Basics for writing a command-line tool in Go
CLI – a library for building beautiful clients
Collecting command-line arguments in CLI
grequests – a REST API package for Go
API overview of grequests
Getting comfortable with the GitHub REST API
Creating a CLI tool as an API client for the GitHub REST API
Using Redis for caching the API data
Creating a unit testing tool for our URL shortening service
Summary
Scaling Our REST API Using Microservices
Getting the code
What are microservices?
Monolith versus microservices
Go Kit a package for building microservices
Building a REST microservice with Go Kit
Adding logging to your microservice
Adding instrumentation to your microservice
Summary
Deploying Our REST services
Getting the code
Installing and configuring Nginx
What is a proxy server?
Important Nginx paths
Using server blocks
Creating a sample Go application and proxying it
Load balancing with Nginx
Rate limiting our REST API
Securing our Nginx proxy server
Monitoring our Go API server with Supervisord
Installing Supervisord
Summary
Using an API Gateway to Monitor and Metricize REST API
Getting the code
Why is an API gateway required?
Kong an open-source API gateway
Introducing Docker
Installing a Kong database and Kong
Adding API to Kong
API logging in Kong
API authentication in Kong
API rate limiting in Kong
Kong CLI
Other API gateways
Summary
Handling Authentication for Our REST Services
Getting the code
How authentication works
Session-based authentication
Introducing Postman a tool for testing REST API
Persisting client sessions with Redis
Introduction to JSON Web Tokens (JWT) and OAuth2
JSON web token format
Reserved claims
Private claims
Creating a JWT in Go
Reading a JWT in Go
OAuth 2 architecture and basics
Authentication versus authorization
Summary
更新时间:2021-07-02 20:14:35