2014-11-10 15 views
7

Ho un numero di micro-servizi creati con Spring Boot, quindi per un po 'di divertimento, ho pensato di provare ad aggiungere HATEOAS a loro per aiutare a configurare cross -collegamento delle risorse. Sembra funzionare abbastanza bene all'interno di un particolare progetto, ma mi chiedevo se c'è un buon modo per collegare le API. Per fare un esempio, immaginate ho 3 servizi:Collegamento cross-service per microservizi HATEOAS

Un servizio dati dell'utente: Codice:

/users/{userid} 

un servizio di calendario dell'utente: Codice:

/users/{userid}/appointments 
/users/{userid}/appointments/{appointmentid} 

un servizio di messaggistica user: Codice:

/users/{userid}/messages 
/users/{userid}/messages/{messageid} 

Per renderlo navigabile tramite l'API, sarebbe utile disporre di collegamenti da una risorsa utente agli appuntamenti e ai messaggi. Allo stesso modo, sarebbe bello avere i link di ritorno da quelle risorse. Questo è tutto molto realizzabile quando ho una singola API con tutto sul percorso di classe, in cui posso scrivere codice come:

Codice:

user.add(linkTo(methodOn(CalendarController.class).appointments(user.getKey())).withRel("appointments")) 

Tuttavia io non sono in grado di farlo se CalendarController è non sul classpath del servizio che sto attualmente colpendo.

Esiste un metodo valido/consigliato per creare collegamenti a controllori che non si trovano nel progetto corrente?

di riferimento da spring forums

+0

abbiamo lo stesso problema ESATTAMENTE. Abbiamo considerato di avere un JAR che definisce percorsi e condivisione che insieme alle risorse che espongono percorsi e che hanno le API parlano tra loro. entrambe le soluzioni presentano degli inconvenienti. Non vedo l'ora di vedere qualche risposta su questo –

+0

Sì, qui. Stiamo pensando di sviluppare la nostra DSL per costruire e condividere link. Nel nostro caso d'uso i collegamenti saranno condivisi con un nodo dello zoo che i servizi possono quindi richiedere collegamenti ad altre risorse. Se Spring HATEOAS offre una soluzione ora o nel prossimo futuro, sarebbe bello seguire quel percorso alla fine. – keaplogik

+0

Penso che stiamo chiedendo la stessa cosa. http://stackoverflow.com/questions/27790905/how-to-establish-relationships-between-spring-data-rest-spring-hateoas-based – code

risposta

1

forse questo è un po 'più complicato di quello che speravate, ma come detto here, questo è esattamente ciò che è per Eureka. Ha anche una bella integrazione con il nuovo progetto Spring Cloud.