Aplicația Ticketing API
În restul laboratorului folosim repository-ul Cloud-Computing-UPB/lab1.
git clone https://github.com/Cloud-Computing-UPB/lab1.git
cd lab1
Ce face aplicația?
Ticketing API este un serviciu REST scris în Go care permite crearea și gestionarea unor tichete. Aplicația poate stoca datele fie în memorie, fie într-o bază de date PostgreSQL.
| Metodă | Ruta | Rol |
|---|---|---|
GET | /health | verifică dacă serviciul răspunde |
GET | /tickets | listează tichetele |
POST | /tickets | creează un tichet |
GET | /tickets/{id} | returnează un tichet |
PUT | /tickets/{id} | înlocuiește un tichet |
DELETE | /tickets/{id} | șterge un tichet |
Pentru POST și PUT, corpul cererii este JSON. Câmpul title este obligatoriu. Valorile acceptate sunt:
status:open,in_progresssauclosed; valoarea implicită esteopenpriority:low,mediumsauhigh; valoarea implicită estemedium
Moduri de rulare
| Variabilă | Rol |
|---|---|
USE_POSTGRES=false | folosește stocarea în memorie; datele dispar la recrearea containerului |
USE_POSTGRES=true | folosește PostgreSQL și necesită DATABASE_URL |
PORT | portul HTTP intern; implicit 8080 |
Mai întâi vom rula un singur container în modul in-memory. Ulterior, Docker Compose va porni API-ul și PostgreSQL împreună.
Structura repository-ului
| Cale | Rol |
|---|---|
main.go | configurează serverul HTTP și alege mecanismul de stocare |
internal/ticket/ | conține modelul, validarea și endpoint-urile |
internal/store/ | conține implementările in-memory și PostgreSQL |
Dockerfile | descrie construirea imaginii aplicației |
docker-compose.yml | descrie serviciile api și db |
.dockerignore | exclude fișierele care nu trebuie trimise în contextul de build |
.env.example | documentează variabilele configurabile |
.github/workflows/ci.yml | automatizează testarea și publicarea; îl vom discuta într-un laborator ulterior |
informație
Nu modificăm sursele în acest laborator. Le inspectăm pentru a înțelege ce intră în imagine și cum se configurează aplicația.