Capture Listener
Stell dir zum Beispiel vor, dass mein Code jedes Mal, wenn eine Anfrage an die Route ‘/logs’ gestellt wird, eine Aufgabe ausführt, die prüft, ob sich die neuen Logs von den alten unterscheiden. Sehen wir uns an, wie das umgesetzt werden kann:APP_STATUS, LOGS oder BACKUP. Diese Funktion sollte zwei Parameter annehmen:
before(repräsentiert den Zustand vor der Anfrage)after(repräsentiert den Zustand nach der Anfrage)
before und after zurückgegebene Datentyp hängt davon ab, auf welchen Endpoint der Listener “hört”. Handelt es sich um die Route APP_STATUS, erhält er StatusData, LOGS erhält LogsData und BACKUP erhält BackupData.
Wie du im Beispiel oben vielleicht bemerkt hast, gibt beim ersten Vergleich der Logs after != before True zurück. Das passiert genau deshalb, weil after gleich LogsData(logs='') ist, da intern noch nichts im Cache gespeichert wurde.
Zusätzliche Informationen zu diesem Decorator
Zusätzliche Informationen zu diesem Decorator
- Wenn du discord.py oder einen Fork davon verwendest (was du wahrscheinlich tust), weißt du,
dass Events durch den Namen
der Funktionen unterschieden werden, die der Decorator umschließt, aber hier ist das anders. Um zu wissen,
auf welche
API-Route der Decorator “hören” muss, verwenden wir den Parameter
endpopint, der eineEndpoint-Klasse erhält, sodass der Name der Funktion, die der Decorator umschließt, dir überlassen bleibt. - Die Funktion, die der Decorator umschließt, kann tatsächlich alles sein, was
aufrufbar ist. Das umfasst reguläre Funktionen, Coroutinen und sogar
Klassen (
__init__wird aufgerufen). - Wenn der Endpoint kein [Endpoint.app_status()], [Endpoint.logs()] oder [Endpoint.backup()] ist,
wird nur ein
response-Parameter (vom Typsquarecloud.http.Response) zurückgegeben.
Request Listener
Die “Request Listener” machen im Grunde dasselbe. Aber hier verwendest du den [Client], und der Rückgabewert aller Endpoints sindsquarecloud.http.Response-Objekte.
Zusätzliche Argumente übergeben
Du kannst an einige Methoden ein Schlüsselwortargument namensextra übergeben, das dann an deinen Listener weitergereicht wird

