Responses
Starlette enthält mehrere Response-Klassen, um die send Senden Sie die entsprechenden ASGI-Nachrichten auf dem Kanal.
Antwort auf
Unterschrift: Response(content, status_code=200, headers=None, media_type=None)
content- Ein Wort oder eine Zeile.status_code- Ein ganzer HTTP-Statuscode.headers- Wörterbücher String.media_type- Eine Zeichenkette, die den Medientyp angibt, z.B."text/html".
Starlette enthält automatisch einen Content-Length-Header, der auch einen Content-Type-Header gemäß media_type enthält und einen Zeichensatz an den Texttyp anfügt, sofern der Zeichensatz nicht bereits in media_type angegeben ist.
Sobald Sie eine Antwort instanziiert haben, können Sie sie senden, indem Sie sie als Instanz der ASGI-Anwendung aufrufen.
from starlette. responses import response import response (englisch)
async def app (scope, receive, send):
assert scope 'type']='http'.
response = Antwort ('Hello, World Hashay', Medien_type ='text/plain')
Erhalte Antworten (Senden, Empfangen, Senden)
Cookie erstellen
Starlette bietet eine set_cookie-Methode, mit der Sie Cookies auf Antwortobjekte setzen können.
Unterschrift: Response.set_cookie(key, value, max_age=None, expires=None, path="/", domain=None, secure=False, httponly=False, samesite="lax")
key- Ein String, der als Cookie-Schlüssel verwendet wird.value- Eine Zeichenfolge, die als Wert für den Cookie verwendet wird.max_age- Eine negative ganze Zahl oder ein Wert, der die Lebensdauer eines Cookies in Sekunden definiert.0Das Cookie wird umgehend gelöscht.Optionalexpires- Entweder ist dies eine ganze Zahl, die die Anzahl der Sekunden vor dem Ablauf des Cookies oder eine Datumszeit definiert.Optionalpath- Eine Zeichenfolge, die die Routing-Teilmenge angibt, auf die das Cookie angewendet werden soll.Optionaldomain- Eine Zeichenfolge, die die Domäne angibt, in der das Cookie gültig ist.Optionalsecure- Ein boolescher Wert, der angibt, dass Cookies nur dann an den Server gesendet werden, wenn die Anforderung über SSL und HTTPS erfolgt.Optionalhttponly- Ein boolescher Wert bedeutet Annahme.Document.cookieDie Charaktere,XMLHttpRequestbzw.RequestAuf das Cookie kann über JavaScript nicht zugegriffen werden.Optionalsamesite- Der gültige Wert für die sameSite-Richtlinie, die das Cookie angibt, ist ein String.'lax'、'strict'und'none'anerkannt werden als.'lax'。Optional
Cookie löschen
Starlette bietet auch eine delete_cookie Methode, um die von Ihnen gesetzten Cookies manuell ablaufen zu lassen.
Unterzeichnung: Response.delete_cookie(key, path='/', domain=None)
HTML-Antwort
Empfangen Sie Text oder Bytes und geben Sie eine HTML-Antwort zurück.
from starlette. responses import HTMLResponse (englisch)
async def app (scope, receive, send):
assert scope 'type']='http'.
Antwort = HTMLResponse ('<html><body><h1>Hallo, Welt!</h1></body></html>')
Erhalte Antworten (Senden, Empfangen, Senden)
Antwort im reinen Text
Empfangen Sie einen Text oder ein Byte und geben Sie eine einfache Textantwort zurück
from starlette. responses import plainTextResponse (englisch)
async def app (scope, receive, send):
assert scope 'type']='http'.
response = plainTextResponse ('Hello, world gamma ')(Übersetzung)
Erhalte Antworten (Senden, Empfangen, Senden)
JSON beantwortet
Rufen Sie einige Daten ab und geben Sie eine application/json-codierte Antwort zurück.
von starlette. responses import JSONResponse
async def app (scope, receive, send):
assert scope 'type']='http'.
Antwort = JSONResponse ({'hello': 'world'}) oder
Erhalte Antworten (Senden, Empfangen, Senden)
JSON-Serialisierung anpassen
Wenn Sie eine feinkörnige Kontrolle über die JSON-Serialisierung benötigen, können Sie JSONResponse untergliedern und die render-Methode überschreiben.
Wenn Sie beispielsweise eine JSON-Bibliothek eines Drittanbieters wie orjson verwenden möchten:
from typing import any (vom Typenimport)
Import von Orjson
von starlette. responses import JSONResponse
Klasse OrjsonResponse (JSONResponse):
def render (self, content: Any)-> Bytes:
Zurück zu: Dumps (Inhalt)
Wenn Sie im Allgemeinen keine Mikrooptimierung für einen bestimmten Endpunkt durchführen oder nicht standardmäßige Objekttypen serialisieren müssen, möchten Sie wahrscheinlich standardmäßig bei JSONResponse bleiben.
Redirect-Response Zurück
Gibt eine HTTP-Umleitung zurück, die standardmäßig den 307-Statuscode verwendet.
von starlette. responses import PlainTextResponse, RedirectResponse
async def app (scope, receive, send):
assert scope 'type']='http'.
if scope-window 'path']!====>
response = RedirectResponse (url ='/')(Übersetzung)
und Else:
response = plainTextResponse ('Hello, world gamma ') Bearbeiten
Erhalte Antworten (Senden, Empfangen, Senden)
Flow antworten
Akzeptieren Sie einen Async-Generator oder einen normalen Generator/Iterator und fließen Sie den Responder.
from starlette. responses import StreamingResponse Übersetzung
Import aus Asyncio
async def slow_numbers (Minimum, Maximum):
Yield '<html><body><ul>phbanogux' oder<html><body>
for number in range (minimum, maximum +1): für die Anzahl in Reichweite (minimum, maximum +1):
yield '<li>% d</li>' % Anzahl
await asyncio. schlaf (05)
Yield '</ul></body></html>'.[Bearbeiten | Quelltext bearbeiten]
async def app (scope, receive, send):
assert scope 'type']='http'.
generator = slow_numbers (1 und 10)
response = StreamingResponse (generator, media_type ='text/html')(Übersetzung)
Erhalte Antworten (Senden, Empfangen, Senden)
Beachten Sie, dass Klassendateiobjekte (wie die von open() erstellten) normale Iteratoren sind, so dass Sie sie direkt in StreamingResponse zurückgeben können.
Dokument beantwortet
Das Dokument wird als Reaktion auf die Übertragung in unangemessener Weise übertragen.
Für die Instanziierung ist im Vergleich zu anderen Antworttypen ein anderer Parametersatz erforderlich:
path- Der Pfad der Dateien, die übertragen werden sollen.headers- Jeder benutzerdefinierte Header, der als Dictionary enthalten sein soll.media_type- Eine Zeichenfolge, die den Medientyp angibt, wenn er nicht festgelegt ist, wird der Dateiname oder Pfad verwendet, um den Medientyp abzuleiten.filename-Wenn diese Einstellung festgelegt ist, wird sie in der AntwortContent-Dispositionenthalten sein.content_disposition_type-Wird in der AntwortContent-Dispositioneingeschlossen, die auf „ Anlage "(Standardwert) oder „ Inline" gesetzt werden kann.
Die Dateiantwort enthält die entsprechenden Content-Length-,Last-Modified-und ETag-Header.
from starlette. responses import FileResponse (englisch)
async def app (scope, receive, send):
assert scope 'type']='http'.
response = FileResponse ('statics/favicon. ico')(Antwort auf FileResponse ('statics/favicon. ico')
Erhalte Antworten (Senden, Empfangen, Senden)
Antwort von Dritten
Reaktion auf die Ereignisquelle
Eine Antwortklasse, die das Senden von Ereignissen durch den Server ermöglicht, um den Ereignisfluss vom Server zum Client zu implementieren, ohne die Komplexität von WebSockets.
baize.asgi.FileResponse
Als reibungsloser Ersatz für Starlette FileResponse verarbeitet es automatisch die Head-Methode und Range-Anfragen.