Ho lavorato a un progetto con più microservizi la cui comunicazione avviene tramite chiamate API. Diciamo che microservizio A chiama un servizio fornito da microservice B. Secondo l'attuale implementazione, non abbiamo più API per i diversi servizi forniti da Microservice B; invece quello che abbiamo è una singola API che accetta un parametro che indica quale servizio deve essere invocato.
Penso che sia una cattiva pratica a causa della seguente ragione. Nel codice corrente, ciò che dobbiamo fare è controllare il parametro usando if condizioni e invocare i metodi nei livelli interni di conseguenza.
if (param == service_1) {
// call service 1 business logic and return
} else if (param == service_2) {
// call service 2 business logic and return
}
..............
..............
..............
} else if (param == service_n) {
// call service n business logic and return
}
Questo design andrebbe bene fino a un numero limitato di servizi. Ma per ogni servizio che aggiungiamo al microservizio B, dobbiamo aggiungere una condizione if all'interfaccia sopra indicata che finirà per aumentare la complessità del metodo.
Penso che tu sia d'accordo con la mia preoccupazione sul design sopra. Al momento, sto cercando un modo migliore per risolvere questo problema e trovare un design adeguato per l'API.
Lo so, fornire diverse chiamate API per diversi servizi è un modo corretto. Ma a parte questo, quali possibilità ci sono?