rowe42 / lhm_animad_admin_html5

0 stars 6 forks source link

Root-URL im API-Gateway #145

Closed rowe42 closed 6 years ago

rowe42 commented 6 years ago

Es stellt sich die Frage, ob wir im API-Gateway eine HAL-Seite unter / (Root) anbieten. Und wenn ja, was darin bereitgestellt wird, z.B. alle verfügbaren Routen (i.e. Microservices).

Wie schon in Issue #78 erwähnt, habe ich in Branch _#78 im API-Gateway-Projekt meine einen RootController eingebaut, der unter / die folgende Seite liefert:

{
  "_links": {
    "user_service": {
      "href": "http://localhost:8082/user_service"
    },
    "admin_service": {
      "href": "http://localhost:8082/admin_service"
    }
  }
}

(das sind genau die Routen in der application.yml, musste ich aber von Hand in den Controller rein programmieren, siehe Klasse RootController)

Alternativ gibt es von Zuul auch einen Management Endpoint "Routes" (vgl. https://cloud.spring.io/spring-cloud-netflix/multi/multi__router_and_filter_zuul.html, Abschnitt "Management Endpoints"), der ist aber standardmäßig von Boot Actuator abgesichert. Man muss ihn also zugänglich machen, entweder indem der User die entsprechende Rolle ACTUATOR im KeyCloak hat oder indem man in der application.yml die Zeile endpoints.routes.sensitive: false ergänzt.

Das Ergebnis sieht dann jedenfalls so aus:

{
  "/user_service/**": "http://localhost:8870/",
  "/admin_service/**": "http://localhost:39146/"
}

Das enthält also die Pfade der Microservices, ist also wohl für unsere Zwecke nicht geeignet.

Was meint ihr, @xdoo @dragonfly28 @Baumfrosch @ejcsid

rowe42 commented 6 years ago

Habe ein Problem festgestellt : wenn man einen RootController wie oben beschrieben ergänzt und unter / verfügbar macht, klappt das reload im api gateway nicht mehr. Vermutlich braucht das refresh die Weiterleitung von / zu /index.html. Ggf müssten wir also eine andere url verwenden, z. B. /paths

rowe42 commented 6 years ago

RootController ist erstellt. Um das o.g. Problem zu umgehen, ist der RootController sowie das komplette Backend und /api/ zu erreichen. Wurde mit Branch _#156 eingecheckt und gemerged. Schließe das Issue.