Notes de version
0.38.2
27 juillet 2024-Le Monde
fixe
- ne suppose pas que toutes les routines ont
__name__surrouting.get_name()#2648.
0.38.1
23 juillet 2024-Le Grand Prix
Supprimé
- Restaurer "Ajouter le support pour l'extension ASGI pathsend"#2649.
0.38.0
20 juillet 2024-Le Grand Prix
ajoutée par
- permet l'utilisation de
memoryviewdansStreamingResponseetResponse#2576 et #2577. - Lorsque le nom de fichier demandé dans
StaticFiles#2583 est trop long, envoyez 404 au lieu de 500.
Changement (ou: changement)
- échoue rapidement sur le paramètre d'instanciation
Jinja2Templateinvalide #2568. - Vérifiez que le gestionnaire de terminaison est asynchrone une seule fois #2536.
fixe
- ajoute la synchronisation appropriée à
WebSocketTestSession#2597.
0.37.2
05 mars 2024-Le Monde de l'Est
ajoutée par
- Ajouter
bytesà_RequestDatatype #2510.
fixe
- Revert "Turn
scope["client"]toNoneonTestClient(#2377)"#2525. - Supprimer déprécié
appArgument passé àhttpx.Clientsur leTestClient#2526.
0.37.1
février 9, 2024
Fixé
- Warn instead of raise for missing env file on
Config#2485.
0.37.0
février 5, 2024
Added par
- prend en charge la WebSocket Denial Response ASGI extension #2041.
0.36.3
février 4, 2024
Fixé
- Create
anyio.Eventon async context #2459.
0.36.2
février 3, 2024
Fixé
0.36.1
23 janvier 2024, avec le soutien de l'État
Fixé
- Vérifiez si "extensions" dans scope avant de vérifier l'extension #2438.
0.36.0
22 janvier 2024, avec le soutien de l'État
ajoutée par
- Ajouter du support pour ASGI
pathsendExtension par #2435. - Annuler
WebSocketTestSessionsur close #2427. - Raise
WebSocketDisconnectquandWebSocket.send()exceptsIOError#2425. - Raise
FileNotFoundErrorlorsque le paramètreenv_filesurConfign'est pas valide #2422.
0.35.1
11 janvier 2024, États-Unis
fixe
- Arrêtez d'utiliser le paramètre de "méthode" déprécié dans
FileResponseà l'intérieur deStaticFiles#2406. - Make
typing-extensionsoptional again #2409.
0.35.0
11 janvier 2024, États-Unis
Ajouté par
- ajoute
*argsàMiddlewareet améliore son conseil de type #2381.
fixe
- utilise
Iterableau lieu deIteratorsuriterate_in_threadpool#2362
Changement dans
- gère
root_pathpour maintenir la compatibilité avec les applications ASGI installées et avec la WSGI #2400. - Après avoir
TestClient#2377 Amiralscope["client"]devientNone
0.34.0
16 décembre 2023-Le Monde
ajoutée par
- utilise
ParamSpecpourrun_in_threadpool#2375. - Ajouter
UploadFile.__repr__#2360.
fixe
- fusionne correctement les URL sur
TestClient#2376. - considère les ETags faibles sur
StaticFiles#2334.
Obsolète
Le paramètre FileResponse(method=...)#2366 est obsolète pour* .
0.33.0
1 décembre 2023
Ajouté par
- Ajouter
middleware#2349 parRoute/WebSocketRoute. - ajoute
middleware#2351 parRouter.
fixe
- Ne remplacez pas
"path"et"root_path"Range Key #2352. - définit
ensure_ascii=Falsesurjson.dumps()pourWebSocket.send_json()#2341.
0.32.0.post1
5 novembre 2023, par l'intermédiaire de la Commission européenne
fixe
- Retour de mkdocs-Material de 9.1.17 à 9.4.7 #2326.
0.32.0
4 novembre 2023-Le Conseil de l'Europe
Ajouté par
- Après avoir
WebSocketDisconnectEnvoyé surreason#2309: C'est le cas. - ajoute le paramètre
domainàSessionMiddleware#2280.
Changement; changement; changement
- hérite de
HTMLResponseau lieu deResponsesur_TemplateResponse#2274. - restaure le commentaire de type
Response.renderà son état pré-0.31.0 #2264.
0.31.1
26 août 2023-Le Monde
fixe
- corrige l'erreur d'importation #2231 lorsque
exceptiongroupn'est pas disponible. - Paramètres pour un environnement Jinja personnalisé
url_forVariable globale #2230.
0.31.0
24 juillet 2023-Le Monde
Ajouté par
- supporte officiellement Python 3.12 #2214.
- Support AnyIO 4.0 #2211.
- Strictly type annotate Starlette (strict mode sur mypy)#2180.
Fixé
- Don't group dupliqué headers on a single string when use the
TestClient#2219.
0.30.0
Le 13 juillet 2023
Remové par
- Drop Python 3.7 support #2178.
0.29.0
Le 13 juillet 2023
Added par
- Ajouter un paramètre
follow_redirectsàTestClient#2207. - Ajouter
__str__àHTTPExceptionetWebSocketException#2181. - Warn utilisateurs qui utilisent
lifespanensemble avecon_startup/on_shutdown#2193. - Collecter les routes de
HostPour générer le schéma OpenAPI #2183. - Ajouter un argument
requestàTemplateResponse#2191.
fixe
- Stop
body_streamdans le casmore_body=FalsesurBaseHTTPMiddleware#2194.
0.28.0
Le 7 juin 2023,
Changé par
- Reuse
RequestBody Buffer for call_next inBaseHTTPMiddleware#1692. - Move exception Handling logique à
Route#2026.
ajoutée par
- ajoute le paramètre
envàJinja2Templateset déprécie**env_options#2159. - Lorsque
httpxAjouter un message d'erreur explicite #2177 lorsqu 'il n'est pas installé.
fixe
- permet l'utilisation du paramètre "name" sur
templates url_for()#2127.
0.27.0
16 mai 2023-Le Grand Prix de la République
Cette version corrige la vulnérabilité de traversée de chemin dans StaticFiles. Vous pouvez consulter le bulletin de sécurité complet: https://github.com/encode/starlette/security/advisores/GHSA-v5gw-mw7f-84px
Ajouté par
- réduit les données WebSocket JSON via
send_json, voir www.example.com pour plus de détails
fixe
- sur
StaticFiles1797 de 4, remplacecommonprefixparcommonpath. - Convertissez ImportErrors en ModuleNotFoundError #2135
- Corriger le contenu du message RuntimeError dans websockets #2141.
0.26.1
13 mars 2023-Le Monde de l'Est
fixe
- Corrigez le type de Lifespan dans Starlette #2077 pour permettre ses sous-classes.
0.26.0.post1
Le 9 mars 2023
Fixé
- Référence de lieu des événements à Lifespan sur les mkdocs.yml #2072.
0.26.0
Le 9 mars 2023
Added par
- Support pour Lifespan état #2060, #2065 et #2064.
Changé par
- Changement par
url_forSignature à retourner aURLinstance #1385.
Fixé
- Allow "name" argument sur
url_for()eturl_path_for()#2050.
Deprecated est déposé
- Deprecate
on_startupeton_shutdownEvents par #2070.
0.25.0
février 14, 2023
Fix
- Limite le nombre de pièces et de fichiers lorsque
multipart/form-dataest parsemé surMultipartParser8c74c2c et #2036.
0.24.0
février 6, 2023
Ajouté par
- Allow
StaticFilesto follow symlinks #1683. - Allow
Request.form()as a context manager #1903. - Ajouter un attribut
sizeàUploadFile#1405. - Ajouter à
env_prefixArgument pourConfig#1990. - Ajouter des processeurs contextuels template #1904.
- Support
stretdatetimesur le paramètreexpiressur la méthodeResponse.set_cookie#1908.
Changé par
- Lazily construit le middleware stack #2017.
- Make the
fileargument required onUploadFile#1413. - Utilisation de extension de débogage dans extension du modèle de réponse personnalisée #1991.
fixe
- Fix url parsing of ipv6 urls sur
URL.replace#1965.
0.23.1
Le 9 décembre 2022
fixe
- Arrêtez seulement de recevoir le flux sur
body_streamSi le corps est vide sur leBaseHTTPMiddleware#1940.
0.23.0
Le 5 décembre 2022
ajoutée par
- Ajouter à
headersParamètre à laTestClient#1966.
Obsolète
- déprécié
StarletteetRouterdécorateur #1897.
fixe
- Réparation
FloatConvertorErreur #1973 sur les expressions rationnelles.
0.22.0
17 novembre 2022-Le Monde
Changé par
- contourne
GZipMiddlewarelorsque la réponse contientContent-Encoding#1901.
fixe
- supprime les
unquote()indésirables des arguments de requête surTestClient#1953. - s'assure que
MutableHeaders._listest en fait unlist#1917. Compatibilité d'importation de* avec la prochaine version deAnyIO#1936.
0.21.0
26 septembre 2022-Le Monde
Cette version remplace le client HTTP sous-jacent utilisé sur TestClient(requests). :arrow_right: httpx), votre suite de tests peut être interrompue en raison des API légèrement différentes de ces clients. pour faciliter la migration, vous pouvez utiliser l'outil bump-testclient.
Changement (ou: changement)
- dans
TestClient#1376, remplacement derequestsparhttpx
ajoutée par
- Ajouter
WebSocketExceptionet support pour WebSocket Exception Handlers #1263. - Ajouter à
middlewareparamètre àMountClasse de #1649. - supporte officiellement Python 3.11 #1863.
- Implémentation
__repr__pour les classes routes #1864.
Fixé
- Fixer le bug sur qui
BackgroundTasksétaient cancéreux quand ils ont utiliséBaseHTTPMiddlewareClient déconnecté #1715.
0.20.4
Le 28 juin 2022
Fixé
- Remove converter from path when generating OpenAPI schema #1648.
0.20.3
Le 10 juin 2022
Fixé
- Revert par Allow
StaticFilesSuivre les symboles » #1681.
0.20.2
Le 7 juin 2022
fixe
- Fix régression sur les pattes routes avec des colons #1675.
- Allow
StaticFilesto follow symlinks #1337.
0.20.1
Le 28 mai 2022, le
fixe
- Improve Detection of async callables #1444.
- Envoyer 400 (Bad Request) lorsque
boundaryest en train de manquer #1617. - Envoyer 400 (Mauvaise demande) lorsque le champ "nom" est manquant sur l'en-tête
Content-Disposition#1643. - Ne pas envoyer de données vides à
StreamingResponsesurBaseHTTPMiddleware#1609. - Ajouter à
__bool__dunner pourSecret#1625.
0.20.0
Le 3 mai 2022
Remové par
0.19.1
Le 22 avril 2022
fixe
- Fixer l'inférence de
Route.nameQuand créé à partir de méthodes #1553. - Avoid
TypeErrorsurwebsocket.disconnectlorsque le code estNone#1574.
Obsolète
- Deprecate
WS_1004_NO_STATUS_RCVDetWS_1005_ABNORMAL_CLOSUREdans Favor ofWS_1005_NO_STATUS_RCVDetWS_1006_ABNORMAL_CLOSUREComme les précédents constants ne correspondaient pas à la WebSockets Specs par WebSockets #1580.
0.19.0
Le 9 mars 2022
ajoutée par
- Error Handler courra toujours, même si l'erreur se produit sur une tâche de fond #761.
- Ajouter un paramètre
headersàHTTPException#1435. - Réponses internes avec
405Code d'état Insert anAllowheader, comme décrit par RFC 7231 pour les #1436. - Après avoir
JSONResponsedans le milieucontentLe paramètre est maintenant obligatoire #1431. - Ajouter un convertisseur d'URL personnalisé pour l'enregistrement #1437.
- ajoute un paramètre de type de disposition de contenu à
FileResponse#1266. - Dans le décorateur de besoins #920, ajoutez le paramètre de requête suivant avec l'URL de la requête d'origine.
- ajoute
raw_pathà la gammeTestClient#1445. - Ajouter un opérateur de syndication à
MutableHeaders#1240 dans le milieu. - Afficher les détails manquants de l'itinéraire sur la page de débogage #1363.
- modifie la plage de versions requise pour
anyioen>=3.4.0,<5.0#1421 et #1460. - ajoute
typing-extensions>=3.10requirement-utilisez #1475 uniquement dans les versions inférieures à Python 3.10.
fixe
- empêche
BaseHTTPMiddlewarede masquer les erreurs deStreamingResponseainsi que l'application installée #1459. SessionMiddlewareUtiliser explicitementpath=..., au lieu d'utiliser par défaut le "root_path"#1512 d'ASGI.Request.clientMaintenant conforme à la norme ASGI #1462.- a augmenté
KeyErrorau début contre la limite manquante #1349.
Obsolète
0.18.0
23 janvier 2022, avec le soutien de l'État
Added par
- Change par défaut la taille du chunk de 4Kb à 64Kb sur
FileResponse#1345. - Ajouter du support pour
functools.partialdansWebSocketRoute#1356. - Ajouter des paquets
StaticFilesavec directory #1350. - Autoriser les options environnementales dans
Jinja2Templates#1401. - Allow HEAD method sur
HttpEndpoint#1346. - Accepter les têtes additionnelles sur
websocket.acceptmessage #1361 et #1422. - Ajouter
reasonàWebSocketclose ASGI event #1417. - Ajouter un attribut de tête à
UploadFile#1382. - Don't omit
Content-Lengthheader forContent-Length: 0cases #1395. - ne définit pas les têtes pour les réponses avec 1xx, 204 et 304 code d'état #1397.
SessionMiddleware.max_ageaccède maintenant àNone, donc le cookie peut être aussi long que la session browser #1387.
fixe
- Tweak à
hashlib.md5()Fonction surFileResponses ETag Generation. Le paramètreusedforsecurityLe drapeau est défini àFalse, si le drapeau est disponible sur le système. ce fixe est une erreur raisonnée sur les systèmes avec FIPS à Enabled #1366 et #1410. - Fix
path_paramstype sururl_path_for()method i.e. turnstrintoAny#1341. HostMaintenant ignorésportsur Routing #1322.
0.17.1
Le 17 novembre 2021, le
fixe
- Fix
IndexErroren authenticationrequiresquand les arguments de function sont distribués entre*argset**kwargs#1335.
0.17.0
Le 4 novembre 2021
Ajouté par
Response.delete_cookieaccepte désormais les mêmes paramètres queResponse.set_cookie#1228.- Mettre à jour le constructeur
Jinja2Templatespour activerPathLike#1292.
fixe
- Fix Badature Signature Exception Handling dans SessionMiddleware #1264.
- Changement par
HTTPConnection.__getitem__return type fromstrpourtyping.Any#1118. - Changement par
ImmutableMultiDict.getlistreturn type fromtyping.List[str]àtyping.List[typing.Any]#1235. - Le Handle
OSErrorExceptions surStaticFiles#1220. - Fix
StaticFiles404.html en mode HTML #1314. - Prevent anyio.ExceptionGroup in Error views under a BaseHTTPMiddleware #1262.
Remové
- Supprimer le support GraphQL #1198.
0.16.0
Le 19 juillet 2021
ajoutée par
fixe
starlette.websockets.WebSocketLes instances sont maintenant hachables et comparables par identité #1039- Un nombre de fixes liés à l'exécution des groupes de tâches dans lifespan #1213,#1227
Deprecated/removed
- La méthode
starlette.templates.Jinja2Templates.get_enva été démolie #1218 - The ClassVar
starlette.testclient.TestClient.async_backendwas removed, the backend is now configured using constructor kwargs #1211 - Passer une Function de générateur Async ou une fonction de générateur à
starlette.routing.Router(lifespan=)Vous devriez enlever votre lifespan dans le@contextlib.asynccontextmanager. #1227 #1110
0.15.0
Le 23 juin 2021
Cette version a apporté des modifications importantes à la partie asynchrone sous-jacente de Starlette. En conséquence, Starlette dépend désormais d'AnyIO et a subi quelques modifications mineures de l'API. Un autre changement majeur de cette version est la dépréciation du support GraphQL intégré.
Ajouté par
- Starlette prend désormais en charge Trio en tant qu 'exécuteur asynchrone via AnyIO- #1157.
TestClient.websocket_connect()Il doit maintenant être utilisé comme gestionnaire de contexte.- Support préliminaire de Python 3.10- #1201.
Le niveau de compression utilisé par* dans
GZipMiddlewareest désormais ajustable- #1128.
fixe
Plusieurs correctifs de CORSMiddleware par* . voir #1111,#1112,#1113,#1199.
* Amélioration des messages d'exception en cas de duplication des noms de paramètres de chemin- #1177.
* RedirectResponse utilise désormais le codage quote au lieu de quote_plus dans l'en-tête Location pour mieux correspondre au comportement dans d'autres frameworks tels que Django- #1164.
* Dans bien d'autres cas, la cause de l'anomalie est maintenant préservée- #1158.
* Dans le cas d'une application montée, les cookies de session utilisent maintenant le chemin racine ASGI- #1147.
* Correction d'une erreur d'invalidation du cache lors de la suppression de fichiers statiques dans certaines circonstances- #1023.
* améliore l'utilisation de la mémoire de BaseHTTPMiddleware lors du traitement des réponses volumineuses-#1012 corrigé via #1157
Obsolète/Supprimée
- Built-in GraphQL support via la classe
GraphQLAppa été déposée et sera supprimée dans une version future. Veuillez voir #619. GraphQL n'est pas supporté sur Python 3.10. - Le
executorparamètre àGraphQLAppa été supprimé. utiliséexecutor_classInstead. - Le paramètre
workersàWSGIMiddlewarea été supprimé. Ce n'est pas un effet since Starlette v0.6.3.
0.14.2
février 2, 2021
Fixé
- fixe la compatibilité
ServerErrorMiddlewareavec Python 3.9.1/3.8.7 lorsque le mode de débogage est activé-#1132. - Fixed Unclosed socket
ResourceWarninglorsque vous utilisez leTestClientavec des points d'extrémité WebSocket- #1132. - Improved Detection of
asyncendpoints wrapped infunctools.partialon Python 3.8+ -#1106.
0.14.1
Le 9 novembre 2020, le
Remové
UJSONResponsewas removed (this change was intended to be included in 0.14). Documentation Comment répondre à l'utilisation de la sérialisation JSON personnalisée- #1074.
0.14.0
Le 8 novembre 2020
Ajouté par
- Starlette supporte officiellement Python3.9.
- In
StreamingResponse, allow custom async iterator such as objects from classes ampling__aiter__. - Allow usage de
functools.partialasync handlers dans les versions 3.6 et 3.7 de Python. - Ajouter 418 Je suis un code d'état d'équipe.
Changé par
- crée des tâches à partir de coroutines handler avant de les envoyer à
asyncio.wait. - utilise
format_exceptioninstead deformat_tbdans les réponsesdebugdeServerErrorMiddleware - Soyez plus lent avec des arguments de poignée lorsque vous utilisez le décorateur
requires.
0.13.8
-
Revert à
Queue(maxsize=1)fix pourBaseHTTPMiddlewareclasses de middleware et réponses de streaming. -
Le
StaticFilesConstructeur maintenant allowspathlib.Pathdans l'addition de strings pour euxdirectoryArgument.
0.13.7
- Fix high memory usage lorsque vous utilisez
BaseHTTPMiddlewareclasses middleware et réponses de streaming.
0.13.6
- Fix 404 erreurs avec
StaticFiles.
0.13.5
- ajoute le support des fonctionnalités
Starlette(lifespan=...). - Des vérifications de traversée de chemin plus robustes dans l'application StaticFiles.
- Correction du codage WSGI PATH_INFO.
- RedirectResponse accepte désormais le paramètre background optionnel
- Autoriser les routes de chemin à inclure des méta-caractères d'expression régulière
- Considérez le « corps » de HTTP ASGI comme une clé facultative.
- N'utilisez pas le pool de threads pour écrire des fichiers de téléchargement en mémoire.
0.13.0
- Passer partout pour faciliter la configuration de l'application sur le style d'initialisation Cela signifie abandonner le style décorateur en faveur des tables de routage déclaratives et des définitions middleware.
0.12.12
- corrige un problème
request.url_for()pour les situations d'installation imbriquée.
0.12.11
- Lorsque vous utilisez ASGI
root_path, réparezrequest.url_for().
0.12.1
- Ajouter à
URL.include_query_params(**kwargs) - Ajouter à
URL.replace_query_params(**kwargs) - Ajouter à
URL.remove_query_params(param_names) request.statePersister correctement dans le middleware.- a ajouté l'interface
request.scope.
0.12.0
- Passez à ASGI 3.0.
- Réparation du middleware CORS.
- Ajouter
StaticFiles(html=True)support. - Fix path quoting en réponses directes.
0.11.1
- Ajouter une interface
request.state, pour stocker des informations supplémentaires arbitrales. - Support disabling GraphiQL avec
GraphQLApp(..., graphiql=False).
0.11.0
DatabaseMiddlewareIl est maintenant droppé dans la faveur dedatabases- Templates ne sont pas configurés longuement sur l'instance d'application. utiliser
templates = Jinja2Templates(directory=...)etreturn templates.TemplateResponse('index.html', {"request": request}) - Schema generation n'est pas attachée à l'instance d'application. utiliser
schemas = SchemaGenerator(...)etreturn schemas.OpenAPIResponse(request=request) LifespanMiddlewareEst droppé dans la main de lifespan basée sur le routeur.- Application Instances accepte maintenant un argument
routes,Starlette(routes=[...]) - La génération de schéma inclut maintenant les routes montées.
0.10.6
- Ajouter
Lifespanrouting composant.
0.10.5
- Ensure
templatingne doit pas être strictement requisjinja2pour être installé.
0.10.4
- Les modèles sont maintenant configurés indépendamment de l'instance d'application.
templates = Jinja2Templates(directory=...). Existing API remains in place, mais n'est pas documenté longuement, et sera déposé dans due course.
0.10.3
- passe à l'intérieur du paquet
databasesindépendant deDatabaseMiddleware. exister API remains en place, mais n'est pas documenté longtemps, et sera déposé dans le cours dur.
0.10.2
- ne laisse pas tomber les numéros de port explicites sur les réponses de
HTTPSRedirectMiddleware.
0.10.1
- Ajout du support de base de données MySQL.
- Ajoutez un itinéraire basé sur l'hôte.
0.10.0
- WebSockets envoie/reçoit maintenant JSON par défaut via des trames de données textuelles.
.send_json(data, mode="binary")et.receive_json(mode="binary")sont utilisés pour le cadrage binaire. GraphQLAppaccepte désormais un paramètreexecutor_classqui doit être utilisé de préférence au paramètreexecutorexistant. résolution d'un problème d'instanciation des actionneurs asynchrones avant la configuration de la boucle d'événements. il est prévu que le paramètreexecutorsera obsolète dans la prochaine version moyenne ou grande. L'authentification et le décorateur@requiresprennent désormais en charge les points de terminaison WebSocket. Les classesMultiDictetImmutableMultiDictsont disponibles dansuvicorn.datastructures.QueryParamsest désormais instancié avec l'argument*args, **kwargsstandard de style dictionnaire.
0.9.11
- Les cookies de session incluent désormais les « expirations » du navigateur en plus de l'expiration déjà signée.
request.form()Une interface multidictionnaire est maintenant retournée.- Lorsque plusieurs clés identiques apparaissent, l'implémentation multi-dictionnaire des paramètres de requête est maintenant utilisée pour
.keys()、.values()et.items()comportements qui reflètent plus précisémentdict。 - utilise
urlsplitau lieu deurlparsetout au long du processus.
0.9.10
- Support sur les méthodes de classe
@requires(...)。 - Appliquer un échappement URL aux données du formulaire.
- prend automatiquement en charge les requêtes
HEAD. - Ajouter
await request.is_disconnected(). - Passez operationName à l'actionneur GraphQL.
0.9.9
- Ajouter
TemplateResponse. - Ajouter
CommaSeparatedStringsdatatype. - Ajouter
BackgroundTaskspour multiple tasks. - Subclass commune pour
RequestetWebSocketà eg. sharesessionFonctionnalité. - Expose Remote Address avec
request.client.
0.9.8
- Ajouter
request.database.executemany.
0.9.7
- Ensure que
AuthenticationMiddlewarehandles lifespan messages correctement.
0.9.6
- Ajouter
AuthenticationMiddleware, et@requires()décorateur.
0.9.5
- Support either
strouSecretpourSessionMiddleware(secret_key=...).
0.9.4
- Ajouter
config.environ. - Ajouter
datastructures.Secret. - Ajouter
datastructures.DatabaseURL.
0.9.3
- Ajouter à
config.Config(".env")
0.9.2
- Ajoutez un support de base optionnel.
- Ajouter
requestà GraphQL contexte. - Hide any password composant dans
URL.__repr__.
0.9.1
- Handle Startup/Shutdown errors properly.
0.9.0
TestClientpeut maintenant être utilisé comme un gestionnaire de contexte, à l'intérieur deLifespanContext.- Lifespan est maintenant désactivé en tant que middleware. les événements de démarrage et d'arrêt sont visibles à l'extérieur de la pile de middleware.
0.8.8
- Meilleur support pour les générateurs de schéma API de Third-Party.
0.8.7
- Support chunked requests with TestClient.
- Cleanup asyncio tasks properly avec WSGIMiddleware.
- Support utilise TestClient avec points de terminaison, pour le service de l'application.
0.8.6
- Les cookies de Session sont maintenant définis sur le path root.
0.8.5
- Les convertisseurs d'URL sont supportés.
- prend en charge les réponses en cache HTTP 304 de
StaticFiles. - Résout un problème d'échappement de caractères dans les données de formulaire.
0.8.4
- Le corps est vide par défaut dans la réponse.
0.8.3
- ajoute le paramètre "name" à
@app.route(). - Utilisez l'en-tête "Host" pour la reconstruction d'URL.
0.8.2
Fichiers statiques
- StaticFiles ne lit plus les fichiers en réponse aux requêtes
HEAD.
0.8.1
Templatisation par
- Utilisez Jinja2 pour ajouter une configuration de modèle par défaut.
Ce qui suit est autorisé:
app = Starlette(template_directory="templates")
@app.route('/')
async def homepage(request):
#`url_for` est disponible à l'intérieur du template.
template = app.get_template('index.html')
content = template.render(demande = demande)
return HTMLResponse(contenu)
0.8.0
Exceptionnellement
- ajoute le support pour
@app.exception_handler(404). - Assurez-vous que les exceptions traitées ne sont pas considérées comme des erreurs par la pile middleware.
Le middleware sessionnel
- Ajouter
max_age, et utiliser timestamp-signed cookies. Defaults à deux semaines.
Les Cookies
- Les cookies Ensure sont strictement HTTP correct.
Statistiques Files
- Check directory exists on instantiation.
0.7.4
Concurrence
- Ajouter à
starlette.concurrency.run_in_threadpool. maintenant handlescontextvarsupport.
0.7.3
Routing par
- Ajouter le support
name=àapp.mount(). ceci allows eg:app.mount('/static', StaticFiles(directory='static'), name='static').
0.7.2
par Middleware
- Ajouter un support pour le décorateur
@app.middleware("http").
Routing par
- Ajouter un "endpoint" à ASGI scope.
0.7.1
Debug tracebacks
- Improve Debug traceback information & styling.
URL routage
- Support mounted URL lookups avec "path=", eg.
url_for('static', path=...). - Support nested URL lookups, eg.
url_for('admin:user', username=...). - Ajouter un support slashes direct.
- Ajoutez www redirect support.
Tâches de Background
- Ajouter un support de tâche de fond à
FileResponseetStreamingResponse.
0.7.0
Support du schéma API
- Ajouter
app.schema_generator = SchemaGenerator(...). - Ajouter une propriété
app.schema. - Ajouter
OpenAPIResponse(...).
Routage GraphQL
- Drop
app.add_graphql_route("/", ...)en faveur de plus de cohérenceapp.add_route("/", GraphQLApp(...)).
0.6.3
Routing API pour
- Support routage vers les méthodes.
- Ensure
url_path_forfonctionne avec Mount('/{some_path_params}'). - Fix Router(default=) argument.
- Support repeated paths, like:
@app.route("/", methods=["GET"]),@app.route("/", methods=["POST"]) - Utilisez le ThreadPoolExecutor par défaut pour tous les endpoints de synchronisation.
0.6.2
SessionMiddleware
Ajout d'une paire de request.session Le soutien, et SessionMiddleware 。
0.6.1
Le middleware BaseHTTP
Ajout de la prise en charge de BaseHTTPMiddleware, qui fournit une interface standard de demande/réponse via un middleware ASGI régulier.
Cela signifie que vous pouvez écrire un middleware ASGI tout en travaillant au niveau de la demande/réponse, plutôt que de travailler directement avec les messages ASGI.
de starlette.applications import Starlette
de starlette.middleware.base import BaseHTTPMiddleware
Customclass Middleware (BaseHTTPMidleware):
async def dispatch(self, request, call_next):
response = await call_next(demande)
response.headers ['Custom-Header']= ' Exemple '
Retour Réponse à
app = Starlette()
app.add_middleware(CustomMiddleware)
0.6.0
Demander.path_params
0.6 Le plus grand changement est que la signature du point final n'est plus:
async def func(request: Request, **kwargs) -> Response
Au lieu de cela, nous utilisons simplement:
async def func(request: Request) -> Response
Le paramètre Path est disponible dans la requête sous la forme request.path_params.
Ceci est différent de la plupart des frameworks réseau Python, mais je pense qu 'il sera finalement plus cohérent tout au long du processus.
request.url_for()
Request et WebSocketSession prennent désormais en charge l'inversion d'URL à l'aide de request.url_for(name, **path_params). cette méthode renvoie une instance URL pleinement qualifiée. une instance URL est un objet ressemblant à une chaîne.
app.url_path_for()(cette expression anglaise peut être un nom de fonction ou de méthode spécifique dans le domaine technique, et dans un contexte chinois, la formulation anglaise du texte original est parfois conservée pour assurer l'exactitude et le professionnalisme.
Les applications prennent désormais en charge l'inversion de chemin d'URL à l'aide de app.url_path_for(name, **path_params). cette méthode renvoie une instance de URL avec un chemin et un schéma définis. une instance d'URL est un objet ressemblant à une chaîne de caractères qui renvoie uniquement un chemin si la conversion en chaîne est forcée.
app. Route
L'application prend désormais en charge un paramètre .routes qui renvoie une liste de [Route|WebSocketRoute|Mount].
Routage, Routage WebSocket, Montage
Les composants de bas niveau vers Router correspondent désormais aux signatures @app.route(),@app.websocket_route() et app.mount().