2013-06-18 13 views
7

Wir haben derzeit ein großes C# ServiceStack API-Projekt für alle Services in unserem System. Ich möchte dies in kleinere APIs aufteilen, die alle einzeln ausgeführt werden, um die Bereitstellung und das Testen zu erleichtern. Ziemlich ähnlich wie beschrieben here von Mike Hadlow.Verwenden von ServiceStack als API Facade Layer

Anstatt jedoch Nginx zu verwenden, möchte ich ServiceStack als Reverse-Proxy verwenden. Diese "externe" API würde Probleme bei der Authentifizierung behandeln und dann alle eingehenden Anfragen mithilfe eines asynchronen HTTP-REST-Aufrufs an die entsprechende interne API weiterleiten.

Wie würde ich diesen Service-Spediteur jedoch erstellen? Nehmen wir an, ich habe eine interne API, die einen/hallo-Aufruf akzeptiert. Wenn ich versuche, einen benutzerdefinierten ServiceRunner auf dem externen API-Host zu erstellen, kann ich JEDEN Aufruf nicht abfangen. Es erwartet immer noch, dass bestimmte Routen vorhanden sind, daher schlägt das Aufrufen von/hallo auf der externen API fehl. Muss ich eine Dummy/Hallo-Route auf dem externen API-Host erstellen, um sie mit meinem eigenen ServiceRunner abfangen zu können? Wenn ich den Rest von ServiceStack betrachte, bin ich sicher, dass es einen saubereren Weg gibt.

Bonuspunkte, wenn es noch mit Swagger kombiniert werden kann :)

Antwort

1

Damals diese Frage ursprünglich gefragt wurde, gab es keine einfache Möglichkeit, eine Wildcard Route von der der Wurzel der Service Basis-URL zu erstellen. I.e. Wenn der Dienst im Root gehostet wurde, gab es keine einfache Möglichkeit, eine/{*} Platzhalterroute zu erstellen. Gleiches, wenn der Dienst an einem anderen Punkt gehostet wurde, zB/api, gab es keine einfache Möglichkeit, ein/api/{ *} Platzhalterroute.

jedoch Unterstützung für eine Fallback route has recently been added to ServiceStack(see detailed example implementation.) Mit einem Ausweichroute können Sie Proxy alle nicht erkannten Anforderungen an den Back-End, ohne sie in Ihrem ServiceStack Projekt aufzuzählen zu haben. Swagger wird jedoch nicht unterstützt.

0

Sie können ServiceStack einfach in einen Reverse Proxy mit dem neuen Proxy Feature umwandeln, der in v4.5.10 hinzugefügt wurde.

Verwandte Themen