Progetto di prova pratica per PhotoSi di Simone Corbelli. Il progetto e' composto 4 microservizi e un servizio di api gateway. Tutti i sono indipendenti uno dall'altro e gia' pronti all'avvio e uso, comunque vengono esplicitati maggiori dettagli in seguito.
Tutti i servizi sono stati creati con:
- DOT NET. 6 scaricabile da qui
- PostgreSql 16 scaricabile da qui. Vengono pero' supportate anche versioni piu' vecchie di postgre
- Visual studio 2022
Ogni microservizio e' corredato di test e al primo avvio si occupa di creare in automatico il proprio database ed effettuarne un seeding, in piu' per ogni microservizio e' presente un appsettings.json e un appsettings.Development.json (automaticamente usato in fase di debug).
N.B.: Ricordasi nella stringa di connessione al database di settare correttamente la porta del db, username e password N.B.: E' importante prima di avviare i test di dare un normale avvio al servizio per far creare il database e relative tabelle
Servizio di Api Gateway che si occupa di contattare tutti i microservizi, espone delle api REST. Il servizio prevede un controller UserController con cui simulare la registrazione utente (POST http://ip:9000/api/v1/user) e il login utente (POST http://ip:9000/api/v1/user/{userId}), e' poi possibile piazzare un ordine (POST http://ip:9000/api/v1/order) tramite OrderController passandogli Nome ordine, Id indirizzo consegna e lista degli id dei prodotti con le quantita'. Sono comunque disponibili le api per contattare tutti i relativi microservizi ed ottenere/aggiungere/modificare Utenti, Prodotti, Indirizzi e Ordini. Di default parte sulla porta 9000, e' comunque possibile modificarla cambiandola nel file launchSettings.json. I file di appsettings.json e appsettings.Development.json sono strutturati nel seguente modo:
Proprieta' | Tipo | Default | Descrizione |
---|---|---|---|
ProductServiceUrl | string | http://localhost:9001/api/ | Url del microserizio Product |
AddressBookServiceUrl | string | http://localhost:9002/api/ | Url del microserizio AddressBook |
OrderServiceUrl | string | http://localhost:9003/api/ | Url del microserizio Order |
UserServiceUrl | string | http://localhost:9004/api/ | Url del microserizio User |
Servizio che si occupa di piazzare e recuperare gli ordini, espone delle api REST richiamate dall'api gateway. Di default parte sulla porta 9003, e' comunque possibile modificarla cambiandola nel file launchSettings.json. Di default crea il database con nome order. I file di appsettings.json e appsettings.Development.json sono strutturati nel seguente modo:
Proprieta' | Tipo | Descrizione |
---|---|---|
PostgreSql | string | Stringa di connessione al database |
Servizio che si occupa di recuperare, modificare e inserire gli indirizzi, espone delle api REST richiamate dall'api gateway. Di default parte sulla porta 9002, e' comunque possibile modificarla cambiandola nel file launchSettings.json. Di default crea il database con nome address_book. I file di appsettings.json e appsettings.Development.json sono strutturati nel seguente modo:
Proprieta' | Tipo | Descrizione |
---|---|---|
PostgreSql | string | Stringa di connessione al database |
Servizio che si occupa di recuperare, modificare e inserire i prodotti, espone delle api REST richiamate dall'api gateway. Di default parte sulla porta 9001, e' comunque possibile modificarla cambiandola nel file launchSettings.json. Di default crea il database con nome product. I file di appsettings.json e appsettings.Development.json sono strutturati nel seguente modo:
Proprieta' | Tipo | Descrizione |
---|---|---|
PostgreSql | string | Stringa di connessione al database |
Servizio che si occupa di recuperare, modificare e inserire gli utenti, espone delle api REST richiamate dall'api gateway. Di default parte sulla porta 9004, e' comunque possibile modificarla cambiandola nel file launchSettings.json. Di default crea il database con nome user. I file di appsettings.json e appsettings.Development.json sono strutturati nel seguente modo:
Proprieta' | Tipo | Descrizione |
---|---|---|
PostgreSql | string | Stringa di connessione al database |