Building RESTful Web services with Go : Learn how to build powerful RESTful APIs with Golang that scale gracefully /
REST is an architectural style that tackles the challenges of building scalable web services and in today's connected world, APIs have taken a central role on the web. APIs provide the fabric through which systems interact, and REST has become synonymous with APIs. The depth, breadth, and ease...
Clasificación: | Libro Electrónico |
---|---|
Autor principal: | |
Otros Autores: | |
Formato: | Electrónico eBook |
Idioma: | Inglés |
Publicado: |
Birmingham :
Packt Publishing,
2017.
|
Temas: | |
Acceso en línea: | Texto completo |
Tabla de Contenidos:
- Cover
- Title Page
- Copyright
- Credits
- About the Author
- Acknowledgments
- About the Reviewer
- www.PacktPub.com
- Customer Feedback
- Table of Contents
- Preface
- Chapter 1: 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
- Chapter 2: 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.
- Chapter 3: 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
- Chapter 4: 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
- Chapter 5: 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
- Chapter 6: 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
- Chapter 7: 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.
- Chapter 8: 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
- Chapter 9: 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
- Chapter 10: 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
- Chapter 11: 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
- Chapter 12: 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
- Index.