Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tutorialedge/go-rest-api-course
https://github.com/tutorialedge/go-rest-api-course
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/tutorialedge/go-rest-api-course
- Owner: TutorialEdge
- Created: 2021-02-06T10:19:28.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-12-04T19:10:11.000Z (about 2 years ago)
- Last Synced: 2024-06-19T00:32:19.865Z (6 months ago)
- Language: Go
- Size: 560 KB
- Stars: 65
- Watchers: 3
- Forks: 14
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![Building a Production Ready REST API in Go Course Repository](https://images.tutorialedge.net/thumbnails/production-ready-rest-api-in-go.png)
# Building a Production Ready REST API in Go - Course Materials
This repo contains all of the source code for my course - [Building a Production Ready REST API in Go](https://tutorialedge.net/courses/go-rest-api-course/).
> Join the TutorialEdge clan for the cost of $12.99 a month to gain access to all of the courses on the site - [Pricing](https://tutorialedge.net/pricing)
## Application Overview
I've designed the code in this course to follow clean architecture principles.
We'll be building a layered app with 3 distinct layers:
* **The Transport Layer** - responsible for handling incoming HTTP requests and passing them on to the relevant service functions.
* **The Service Layer** - responsible for all the business logic in your application.
* **The Repository Layer** - responsible for all the interactions with the database!This ends up looking something like this:
![Architecture Overview](docs/architecture-diagram.png)
## Technologies Used:
* **Postgres**
* **Docker + Docker-Compose**
* **Go** (This one was fairly obvious no?)
* **Postman** - for testing our service manually with HTTP request.## Frameworks + Libraries Used
* **sqlx** - for simplifying our interactions with the database
* **golang-migrate** - for running our migrations on app startup
* **dgrijalva/jwt-go** - for working with JWTs in our transport layer.
* **satori/go.uuid** - for generating and working with UUIDs.
* **sirupsen/logrus** - nicer logging.
* **stretchr/testify** - For easier testing!## Prerequisites
This course is designed to help teach you one approach for building and structuring a production-ready REST API in Go. It's designed for people with some Go already, I wont be covering the basic syntax for Go, but mostly focused on higher-level topics.
## Support
Have any support issues or follow-up questions? Join us on the TutorialEdge Clan discord and get real-time support for all of your Go needs!