- DB Postgres
- API REST
- Gestion des logs
- Client CLI
- Gestion de la conf
- Packaging avec Docker
15 lignes pour démarrer un server web avec une route ==> ./withoutGin/main.go
Framework Web :
- Zero allocation router : httprouter (https://github.com/julienschmidt/httprouter) Mux dans le monde Go(lang)
- Battle tested
- Productif
- "Crystal Clear" API
- Middleware support (martini/contrib)
- Crash free (automatic panic recovery)
- JSON Validation
- Routes Grouping
- Built-in rendering (json, xml, etc.)
- ...
+--------------+ +-------------------------+ +---------------------+
| | | | | |
| main() +----> config | | models |
| | | | | |
+---------+----+ +-------------------------+ +----------+----------+
| ^
| +-------------------------+ +----------+----------+
| | | | |
+---------> database connection <-------------+ controllers |
| | | | |
| +-------------------------+ +----------+----------+
| ^
| +-------------------------+ +----------+----------+
| | | | |
+---------> web server +-------------> routes |
| | | |
+--------------+----------+ +---------------------+
|
|
+-------+----------+
| |
| .start() |
| |
+------------------+
- main
- models : les objets métiers, la connexion à la DB
- server : le server lui même, les routes, ....
- controllers : la logique de gestion des données métiers
- config : la config accessible partout (injection de dépendances, tests, blabla)
- la config
- ./config/config.go
- le server qui démarre avec une route ANY /
- ./server/server.go
- ./server/routes.go
- main.go
- le modele User
- ./users/user.go
- le controller User avec un get /users qui renvoie une liste vide (rendering c.JSON())
"The fantastic ORM library for Golang, aims to be developer friendly."
- La connexion à la BDD, gestion du pool de connexion, etc...
- ./models/db.go
- démarrage d'un conteneur postgres (merci docker pour mac)
- auto-migration, initialisation du modèle
- implémentons le /users et les autres controlleurs
- BindJSON, formdata, gestion des erreurs, etc...
- Authentification basique
- Groupes