Responses
Starlette bevat antwoordklassen voor het verzenden van geschikte ASGI-berichten via het send-kanaal.
reactie
Handtekening: Response(content, status_code=200, headers=None, media_type=None)
content- Een string of byte string.status_codeEen gehele HTTP-statuscode.headers- snaarwoordenboek.media_type- Een string die het mediatype geeft. Bijvoorbeeld: "text / html"
Starlette voegt automatisch een Content-Length header toe. Het bevat ook een Content-Type header afhankelijk van het media _ type en voegt een tekenset toe voor het teksttype, tenzij de tekenset al is gespecificeerd in media_type.
Zodra u een antwoord heeft geïnstantieerd, kunt u het verzenden door het aan te roepen als een ASGI-toepassingsinstantie.
Reacties van starlette. import
Async def app (bereik, ontvangen, verzenden):
Toepassingsgebied ['type'] = = 'http'
Reactie = Reactie ('Hallo, wereld!', media _ type = 'tekst / gewoon')
In afwachting van reactie (scope, ontvangen, verzenden)
Cookies instellen
Starlette biedt een set_cookie-methode waarmee u cookies op responsobjecten kunt instellen.
Handtekening: Response.set_cookie(key, value, max_age=None, expires=None, path="/", domain=None, secure=False, httponly=False, samesite="lax")
keyEen string die zal worden gebruikt als een cookie key.valueEen string die zal worden gebruikt als de cookiewaarde.max_age- Een geheel getal dat de levensduur van de cookie in seconden definieert. Een negatief geheel getal of waarde van0zal de cookie onmiddellijk weggooien.Optionalexpires- Ofwel een geheel getal dat het aantal seconden definieert voordat de cookie verloopt, ofwel een datum en tijd.OptionalpathEen string die de subset van routes specificeert waarop de cookie van toepassing zal zijn.Optionaldomain- Een string die het veld aangeeft waar de cookie geldig is.OptionalsecureEen booleaanse waarde die aangeeft dat cookies alleen naar de server worden verzonden wanneer een verzoek wordt gedaan met behulp van de SSL- en HTTPS-protocollen.Optionalhttponly- Een booleaanse waarde die aangeeft dat de cookie niet toegankelijk is via JavaScript via de eigenschapDocument.cookie,XMLHttpRequestofRequestAPI.Optionalsamesite- een string die het sameSite-beleid voor cookies specificeert. Geldige waarden zijn'lax','strict'en'none'. Standaard is'lax'.Optional
Cookies verwijderen
Integendeel, Starlette biedt ook een delete_cookie-methode om set cookies handmatig te laten verlopen.
Handtekening: Response.delete_cookie(key, path='/', domain=None)
HTML reactie
Ontvang wat tekst of bytes en retourneer een HTML-antwoord.
Uit starlette.reacties importeren HTMLResponse
Async def app (bereik, ontvangen, verzenden):
Toepassingsgebied ['type'] = = 'http'
Reactie = HTMLReactie ('<html><body><h1>Hallo, wereld!</h1></body></html>')
In afwachting van reactie (scope, ontvangen, verzenden)
gewone tekst reactie
Ontvangt wat tekst of bytes en retourneert een antwoord in platte tekst.
Vanaf starlette.reacties importeren PlainTextResponse
Async def app (bereik, ontvangen, verzenden):
Toepassingsgebied ['type'] = = 'http'
Reactie = PlainTextResponse ('Hallo, wereld!')
In afwachting van reactie (scope, ontvangen, verzenden)
JSON reactie
Krijg wat gegevens en retourneer een application/json-gecodeerd antwoord.
Uit starlette.reacties importeren JSONResponse
Async def app (bereik, ontvangen, verzenden):
Toepassingsgebied ['type'] = = 'http'
Reactie = JSONReactie ({'hello': 'world'})
In afwachting van reactie (scope, ontvangen, verzenden)
Aangepaste JSON-serialisatie
Als u fijnkorrelige controle over JSON-serialisatie nodig heeft, kunt u JSONResponse subklassen en de render-methoden overschrijven.
Als u bijvoorbeeld een JSON-bibliotheek van derden wilt gebruiken, zoals orjson:
Elke import uit typen
Orjson importeren
Uit starlette.reacties importeren JSONResponse
Klasse OrjsonResponse (JSONResponse):
Def render (zelf, inhoud: Elke) - > bytes:
Retourneert orjson.dumps (inhoud)
Over het algemeen wilt u, tenzij u specifieke eindpunten wilt micro-optimaliseren of niet-standaard objecttypes moet serialiseren, standaard bij JSONResponse blijven.
Reactie omleiden
Retourneert een HTTP-omleiding. Standaard wordt 307-statuscode gebruikt.
Importeer vanuit starlette.reacties PlainTextResponse, RedirectResponse
Async def app (bereik, ontvangen, verzenden):
Toepassingsgebied ['type'] = = 'http'
Als scope ['pad']! = '/':
Reactie = RedirectResponse (url = '/')
Anders:
Reactie = PlainTextResponse ('Hallo, wereld!')
In afwachting van reactie (scope, ontvangen, verzenden)
streaming reactie
Neem een asynchrone generator of een normale generator / iterator en stream het responslichaam.
StreamingResponse geïmporteerd uit starlette.response
Asyncio importeren
Async def slow _ nummers (minimum, maximum):
Opbrengst '<html><body><ul>'
Voor aantallen binnen bereik (minimum, maximum + 1):
Opbrengst '<li>% d</li>'% nummer
In afwachting van asyncio.sleep (0.5)
Opbrengst '</ul></body></html>'
Async def app (bereik, ontvangen, verzenden):
Toepassingsgebied ['type'] = = 'http'
Generator = langzame _ nummers (1, 10)
Reactie = StreamingResponse (generator, media _ type = 'tekst / html')
In afwachting van reactie (scope, ontvangen, verzenden)
Houd er rekening mee dat klasse-bestandsobjecten (zoals die gemaakt door open()) normale iterators zijn. Daarom kunt u ze rechtstreeks in StreamingResponse retourneren.
bestand reactie
Stream het bestand asynchroon als antwoord.
Instantiatie vereist een andere set parameters dan andere responstypen:
pathHet bestandspad van het te streamen bestand.headers- Eventuele aangepaste kopteksten die als woordenboek moeten worden opgenomen.media_type- Een tekenreeks die het mediatype geeft. Indien niet ingesteld, wordt de bestandsnaam of het pad gebruikt om het mediatype af te leiden.filename- Indien ingesteld, wordt het opgenomen in de reactieContent-Disposition.content_disposition_type- wordt opgenomen in de reactieContent-Disposition. Kan worden ingesteld op "attachment" (standaard) of "interne verbinding".
Het bestandsantwoord bevat de juiste Content-Length-,Last-Modified- en ETag-headers.
FileResponse geïmporteerd uit starlette.response
Async def app (bereik, ontvangen, verzenden):
Toepassingsgebied ['type'] = = 'http'
Reactie = FileResponse ('statics / favicon.ico')
In afwachting van reactie (scope, ontvangen, verzenden)
reactie van derden
incident bron reactie
Een responsklasse die door de server verzonden gebeurtenissen implementeert. Het maakt het streamen van gebeurtenissen van server naar client mogelijk zonder de complexiteit van WebSockets.
Baize.asgi. BestandRespons
Als een soepel alternatief voor Starlette FileResponse, zal het automatisch Head-methoden en bereikverzoeken afhandelen.