Ist es möglich, die Verwendung von Platzhaltern oder fangen-alle Pfade, die in der AWS-API-Gateway
Ich versuche, leiten den gesamten Verkehr für eine domain zu einem anderen. Anstatt einen server laufen, der speziell für diese Arbeit wurde ich versuchen, zu verwenden AWS-API-Gateway mit lambda, um die Umleitung durchgeführt.
Habe ich das ok arbeitet für den root-Pfad"/", aber alle Anforderungen für sub-Pfade, wie z.B. /a nicht behandelt. Gibt es eine Möglichkeit, zu definieren, eine "catch all" - Ressource oder wildcard-Pfad-handler?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Letzte Woche, API-Gateway unterstützt jetzt das, was Sie als "Catch-all-Pfad-Variablen".
Vollen details und ein walk-through-hier: API-Gateway-Update – Neue Funktionen Vereinfachen die API-Entwicklung
Update: Wie in der letzten Woche, API-Gateway unterstützt jetzt das, was Sie als "Catch-all-Pfad-Variablen". Sehen API-Gateway-Update – Neue Funktionen Vereinfachen die API-Entwicklung.
Sie benötigen, um eine Ressource zu erstellen für jedes Niveau leider. Der Grund dafür ist der API-Gateway ermöglicht Ihnen den Zugriff auf diese Parameter über ein Objekt.Beispiel:
method.request.path.XXXX
Also, wenn du hast gerade
/{param}
Sie könnten Zugriff, mit:method.request.path.param
aber wenn Sie hatte einen verschachtelten Pfad (params mit Schrägstrich), es würde nicht funktionieren. Sie würde auch erhalten, ein 404 für den gesamten Antrag.Wenn
method.request.path.param
war ein array statt...dann könnte es get-Parametern durch die position, wenn Sie nicht benannt. Zum Beispielmethod.request.path.param[]
...Named params könnte auch behandelt werden unter gibt es, aber der Zugriff auf Sie würde nicht wirklich einfach werden. Es müsste mit etwas, das eine Art von JSON-Pfad-Zuordnung (denken mögen, was Sie tun können, mit Ihrem mapping-Vorlagen). Leider ist dies nicht, wie es gehandhabt wird in der API-Gateway.Ich denke, es ist ok, aber da dies machen könnte Konfiguration der API-Gateway noch komplexer. Es ist jedoch auch limit-API-Gateway und um diese situation zu behandeln, werden Sie schließlich am Ende mit eine verwirrende Konfiguration sowieso.
So, Sie gehen den langen Weg hier. Erstellen Sie die gleiche Methode, die für mehrere Ressourcen und tun etwas, wie:
/{1}/{2}/{3}/{4}/{5}/{6}/{7}
und so weiter. Dann können Sie verarbeiten, jeden Pfad parameter-Ebene, wenn nötig.WENN die Anzahl der Parameter ist immer das gleiche, dann bist du mit ein bisschen mehr Glück und müssen nur ein Bündel von Ressourcen, sondern eine Methode am Ende.
Quelle: https://forums.aws.amazon.com/thread.jspa?messageID=689700򨘤
ANY
Anfrage und/{proxy+}
- so viel mehr als nur ein Platzhalter Weg, aber ein wildcard-HTTP-Methode wird ebenfalls unterstützt \o/Können Sie eine Ressource erstellen mit Pfad wie
/{thepath+}
. Plus-Zeichen ist wichtig.Dann in Ihrer lambda-Funktion können Sie den Zugriff auf den Wert mit den beiden
event.path
- enthält immer den vollständigen Pfadevent.pathParameters.thepath
- enthält der Teil von Ihnen definiert. Andere mögliche use-case: definieren Sie die Ressource, wie/images/{imagepath+}
nur match Pfade mit bestimmten Präfix. Die variable enthält nur den Unterpfad.Können Sie Debuggen, alle Werte übergeben werden, um Ihre Funktion mit:
JSON.stringify(event)
Die vollständige Dokumentation
Können Sie eine Ressource erstellen mit path-variable
/{param}
, und Sie kann behandeln Sie dies als wildcard-Pfad-handler.Dank,
- Ka Hou
/{param}
wird nicht mit verschachtelten Pfaden. E. g./something
passen, aber/something/else
wird nicht mit der Ressource/{param}