Advanced patterns for building APIs and web applications in Go

Let’s Go Further helps you extend and expand your knowledge of Go — taking you beyond the basics and guiding you through advanced patterns for developing, managing and deploying APIs and web applications.

“Attention to the details, explanation of possible solutions, and best practices… it perfectly addresses the most important aspects of building APIs.” Orest Onuszko DevOps engineer / Germany

Let's Go Further guides you through the start-to-finish build of a modern JSON API in Go – from project setup to deployment in production.

As well as covering fundamental topics like sending and receiving JSON data, the book goes in-depth and explores practical code patterns and best practices for advanced functionality like implementing graceful shutdowns, managing background tasks, reporting metrics, and much more.

You’ll learn a lot about topics that are often important to your real-world work, but which are rarely discussed in beginner-level courses and aren't fully explained by the official Go documentation. Let's Go Further also goes beyond development. It outlines tools and techniques to help manage your project on an ongoing basis, and also gives you a step-by-step playbook for deploying your API to a live production server.

By the end of the book you'll have all the knowledge you need to create robust and professional APIs which act as backends for SPAs and native mobile applications, or function as stand-alone services.

If you read and enjoyed the first Let’s Go book, this course should be a great fit for you and an ideal next step in mastering Go.

So grab your copy, break out your text editor, and happy coding!

Alex Edwards
“Let’s Go Further was an enjoyable balance between practical code and theory, it really helped me establish a stronger foundation and I finally feel confident to start working on my first official full-stack app.” Mark (Sobie) Web developer / Pennsylvania

What You’ll Learn…

  1. 1Structure and organization — How to implement an idiomatic and flexible code structure for your RESTful API projects.
  2. 2JSON responses — How to send JSON responses from your API, how to format and customize them, and what common gotchas you need to be aware of.
  3. 3JSON requests — How to parse incoming JSON requests, manage bad requests, and restrict and validate their content.
  4. 4SQL migrations — How to use SQL migrations to manage changes to your database schema.
  5. 5Database operations — How to set timeouts on your database queries and optimize the behavior of Go's sql.DB connection pool.
  6. 6Beyond CRUD — How to perform advanced actions on your API resources, including fetching related data and partial updates (with optimistic concurrency control).
  7. 7Filtering, sorting and pagination — How to support filtering, sorting and pagination of data in your API endpoints.
  8. 8Full-text search — How to use PostgreSQL's full-text search functionality to perform natural-language searches of your data.
  9. 9Structured logging — How to develop a custom logger which writes structured, leveled, log entries in JSON format.
  10. 10Rate-limiting — How to limit requests to your API on a per-client basis.
  11. 11Managing background tasks — How to safely execute tasks in background goroutines.
  12. 12Graceful shutdown — How to set up your API to support graceful shutdowns, including waiting for background tasks to complete.
  13. 13Sending emails — How to send emails from your API and manage email content using Go’s new embedded files functionality.
  14. 14User activation and password resets — How to build secure workflows for registering users, verifying their email address, and managing password resets.
  15. 15Authentication — How to authenticate users with both stateful bearers tokens and stateless JWTs (JSON web tokens).
  16. 16Permission-based authorization — How to implement granular permission-based authorization checks on your API endpoints.
  17. 17Managing CORS requests — How to control cross-origin requests to your API from front-end JavaScript applications.
  18. 18Metrics — How to expose application metrics, including memory use, sql.DB connection pool statistics, response status counts and more.
  19. 19Building and auditing — How to combine Go's tooling and Makefiles to easily audit your code, build binaries and vendor dependencies.
  20. 20Versioning — How to leverage Git to apply automatic application versioning when building binaries.
  21. 21Deployment — How to set up a Linux server on Digital Ocean, automate deployments, and run your API as a background service in production using systemd.

Want to get a better feel for the book? Take a look through the free sample and complete chapter listing.

About the Author

Hey, I’m Alex Edwards, a full-stack web developer and author of Let's Go and Let's Go Further. I live near Innsbruck, Austria.

I’ve been working with Go for over 8 years, building production applications for myself and commercial clients (including the website that you’re reading now!) and helping people all around the world improve their Go skills.

You can see more of my writing on my blog (where I publish detailed tutorials), some of my open-source work on GitHub, and you can also follow me on Instagram and Twitter.

Publication Information

Written for: Go 1.17
Last updated: August 27th, 2021
Formats: HTML, PDF and ePUB
Language: US English
Size: 584 pages (in PDF format)
Version: 1.1.0
Guarantee: All purchases come with a 30-day money-back guarantee.
“Another great book by @ajmedwards. In-depth technical content you can apply in production or for your side projects. Learned a ton, thanks! Raimondas Sasnauskas Software engineering manager / Germany

Ready to take your Go knowledge to the next level? Download your copy of Let's Go Further now…

Let's Go Further
  • The full book in HTML, PDF & EPUB format
  • Complete application source code
  • Future updates and releases included
  • In-depth explanations – learn why as well as how
  • DRM free – it's yours to download, read and keep forever
  • Updated for Go 1.17
Get the book $59.95 USD

Buying for your team? Email me for a multiple copy discount.

“If you're an experienced developer in other languages or familiar with @golang basics and want to learn how to build real world projects with Go, then I would strongly recommend Let's Go Further Siva Software developer and Author / India

Frequently Asked Questions

Who is this book suitable for?

This book is written as a follow up to Let's Go. If you've already read and enjoyed Let's Go, then Let's Go Further should be a great fit for you and an ideal next step in your learning.

Let's Go Further can also be read as a standalone book, but please be aware that it's not designed for newcomers to Go — and you should already be comfortable with Go and the fundamentals of building and testing database-backed web applications.

How often do you make updates? How will I get them?

Updated versions of the book will be emailed to you at the address you provide during checkout. These are usually sent out once every 6 months, to coincide with new major releases of the Go language. You can unsubscribe from the updates at any time.

Does the book use a framework or the standard library?

Let's Go Further uses the Go standard library (rather than a specific framework like Buffalo, Echo or Gin). A few small external packages are used where it makes sense for security reasons and to reduce complexity.

Do you offer a student discount?

Yes, I'm happy to offer a 25% discount for anyone in full-time education. Email me at alex@alexedwards.net, and I'll send you a discount code that you can use at checkout.

What happens after I buy the book?

You can buy online by PayPal, credit card or debit card over a secure encrypted connection. After purchase you'll immediately be given a download link for the book, and a email confirmation will also be sent to you.

What if the book isn't right for me?

If you don’t get anything from the book, then just reply to your purchase receipt within 30 days and I’ll issue a full refund.

Anything else?

Feel free to email me at alex@alexedwards.net and I'll be happy to talk.