Ho due applicazioni di avvio a molla in cui una di esse funge da gateway API (come illustrato qui Spring Example). L'altra che è cablata nella prima è l'esposizione di un servizio di profilo che utilizza il poggia-dati molla (spring-data-neo4j-rest).I percorsi HATEOAS non sono validi quando si utilizza un gateway API in un'app di avvio di primavera
La prima applicazione si avvia sulla porta 8080 e sta usando Zuul per instradare le richieste al secondo nel modo seguente:
zuul:
routes:
profiles:
path: /profiles/**
url: http://localhost:8083/profiles/
Questo tutto funziona benissimo e le richieste di http://localhost:8080/profiles vengono serviti dalla seconda applicazione. Il problema però è che i link HATEOAS nella risposta non sono corretti. La risposta da chiamare che secondo servizio siano corrette:
{
"_links": {
"self": {
"href": "http://localhost:8083/profiles{?page,size,sort}",
"templated": true
},
"search": {
"href": "http://localhost:8083/profiles/search"
}
},
"_embedded": {
"profiles": [
{
"name": "Andrew Rutter",
"_links": {
"self": {
"href": "http://localhost:8083/profiles/0"
}
}
},
{
"name": "Andrew Rutter",
"_links": {
"self": {
"href": "http://localhost:8083/profiles/1"
}
}
}
]
},
"page": {
"size": 20,
"totalElements": 2,
"totalPages": 1,
"number": 0
}
}
Ma quando questo torna al mio gateway API, i link vengono riscritte per
{
"name": "Andrew Rutter",
"_links": {
"self": {
"href": "http://localhost:8080/profiles/profiles/0"
}
}
}
che è l'alias percorso gateway più il servizio effettivo base Uri. Mi manca un'opzione zuul per disabilitare quel comportamento e basta lasciare l'hateoas uri in posizione con una regolazione host. O c'è un modo per il mio servizio dietro il gateway di essere collegato a/piuttosto che l'endpoint di risorsa predefinito di/profili (in questo caso) che eviterebbe l'aggiunta del percorso indesiderato.
Grazie!
Grazie per il suggerimento. Il risultato dell'impostazione a false è che i collegamenti restituiti sono i collegamenti diretti al servizio back-end che non è desiderabile. Ho notato che la versione spring-hateoas che è stata introdotta era la 0.16.0, quindi ho provato a cambiare la dipendenza fino alla corrente, ma senza gioia. Ho cambiato il percorso API in/xyz nel gateway per rendere le cose più chiare. Quando richiedo un profilo specifico come/xzy/0, questo viene inviato internamente a/profiles/0 ma il link di hateo nella risposta finisce come/xyz/profiles/0/profiles/0 –