Примечания к выпуску
0.38.2
27 июля 2024 года
Фиксированный
- не предполагает, что все процедуры имеют
__name__наrouting.get_name()#2648.
0.38.1
23 июля 2024 г.
Удален.
- Восстановить «Добавить поддержку расширения ASGI pathsend»#2649.
0.38.0
20 июля 2024 г.
Добавленные
- позволяет использовать
memoryviewвStreamingResponseиResponse#2576 и #2577. - отправляет 404 вместо 500, когда имя файла, запрошенное в
StaticFiles#2583, слишком длинное.
Изменить (или изменить)
- быстро терпит неудачу при неверном параметре экземпляра
Jinja2Template#2568. - Проверьте, что обработчик конечных точек асинхронно только один раз #2536.
Фиксированный
- добавляет соответствующую синхронизацию в
WebSocketTestSession#2597.
0.37.2
5 марта 2024 года
Добавленные
- Add
bytesto_RequestDatatype #2510.
Фиксированный
- Revert "Turn
scope["client"]toNoneonTestClient(#2377)"#2525. - Remove deprecated
appargument passed tohttpx.Clienton theTestClient#2526.
0.37.1
9 февраля 2024 года
Фиксированный
- Warn Instead of raise for missing env file on
Config#2485.
0.37.0
5 февраля 2024 года
Added
- поддерживает WebSocket Denial Response ASGI extension #2041.
0.36.3
4 февраля 2024 года
Фиксированный
- Создание
anyio.Eventon async context #2459.
0.36.2
3 февраля 2024 года
Фиксированный
0.36.1
Июнь 23, 2024
Фиксированный
- Check if "extensions" in scope before checking the extension #2438.
0.36.0
Июнь 22, 2024
Добавленные
- Add Support for ASGI
pathsendextension #2435. - Cancel
WebSocketTestSessionon close #2427. - Raise
WebSocketDisconnectwhenWebSocket.send()exceptsIOError#2425. - Raise
FileNotFoundErrorwhen theenv_fileparameter onConfigis not valid #2422.
0.35.1
Январь 11, 2024
Фиксированный
- Stop using the deprecated method" parameter in
FileResponseinside ofStaticFiles" #2406. - Make
typing-extensionsoptional again #2409.
0.35.0
Январь 11, 2024
Добавленные
- добавляет
*argsвMiddlewareи улучшает его тип №2381.
Фиксированный
- В
iterate_in_threadpool#2362 ИспользованиеIterableа неIterator
Изменения
- обрабатывает
root_path, чтобы поддерживать совместимость с установленными приложениями ASGI и WSGI #2400. - в
TestClient#2377 преобразуетscope["client"]вNone
0.34.0
16 декабря 2023 года
Добавленные
- использует
ParamSpecдляrun_in_threadpool#2375. - добавил
UploadFile.__repr__#2360.
Фиксированный
- правильно объединяет URL на
TestClient#2376. - учитывает слабые ETags на
StaticFiles#2334.
Устарело.
- не использует параметр
FileResponse(method=...)#2366.
0.33.0
1 декабря 2023 г.
Добавленные
- добавляет
middleware#2349 вRoute/WebSocketRoute. - добавляет
middleware#2351 вRouter.
Фиксированный
- не перезаписывайте ключ диапазона
"path"и"root_path"#2352. - будет
ensure_ascii=FalseУстановить вjson.dumps()для использованияWebSocket.send_json()#2341.
0.32.0.post1
5 ноября 2023 года
Фиксированный
- Отправить mkdocs-material из 9.1.17 в 9.4.7 #2326.
0.32.0
4 ноября 2023 г.
Добавленные
- отправляет
reason#2309 наWebSocketDisconnect. - добавляет параметр
domainвSessionMiddleware#2280.
изменение; изменение; изменение
- наследует от
HTMLResponseвместоResponseна_TemplateResponse#2274. - возвращает комментарии типа
Response.renderк состоянию #2264, предшествовавшему их 0.31.0.
0.31.1
26 августа 2023 года
Фиксированный
- исправляет ошибку импорта #2231, когда
exceptiongroupнедоступен. - устанавливает глобальную переменную
url_for#2230 для пользовательской среды Jinja.
0.31.0
24 июля 2023 года
Добавленные
- Официальная поддержка Python 3.12 #2214.
- Support AnyIO 4.0 #2211.
- Strictly type annotate Starlette (strict mode on mypy)#2180.
Fixed
- Don't group duplicated headers on a single string When using the
TestClient#2219.
0.30.0
13 июля 2023
Removeded
- Drop Python 3.7 Support #2178.
0.29.0
13 июля 2023
Added
- Add
follow_redirectsПараметр дляTestClient#2207. - Add
__str__toHTTPExceptionandWebSocketException#2181. - Warn users When using
lifespantogether withon_startup/on_shutdown#2193. - Collect routes from
Hostto generate the OpenAPI schema #2183. - Add
requestargument toTemplateResponse#2191.
Фиксированный
- Stop
body_streamin casemore_body=FalseonBaseHTTPMiddleware#2194.
0.28.0
Июнь 7, 2023
Переменный
- Reuse
Request's body buffer for call_next inBaseHTTPMiddleware#1692. - Move exception handling logic to
Route#2026.
Добавленные
- добавляет параметр
envкJinja2Templatesи отказывается от**env_options#2159. - добавляет явное сообщение об ошибке #2177, когда
httpxне установлен.
Фиксированный
- позволяет использовать параметр name в
templates url_for()#2127.
0.27.0
16 мая 2023 года
В этой версии исправлена ошибка, связанная с пересечением путей в StaticFiles. Вы можете ознакомиться с полным бюллетенем по безопасности: https://github.com/encde/starlette/security/advisories/GHSA-v5gw-mw7f-84px
Добавленные
- уменьшает данные JSON WebSocket с помощью
send_json, см. https://github.com/encode/starlette/pull/2128
Фиксированный
- на
StaticFiles1797de4 заменилcommonprefixcommonpath. - Преобразовать ImportErrors в ModuleNotFoundError #2135.
- Исправьте сообщение RuntimeError в websockets #2141.
0.26.1
13 марта 2023 года
Фиксированный
- Исправлено тип Lifespan в Starlette #2077, чтобы разрешить его подклассы.
0.26.0.post1
9 марта 2023 года
Fixed
- reference from Events to Lifespan on the mkdocs.yml #2072.
0.26.0
9 марта 2023 года
Added
- Поддержка Lifespan State #2060, #2065 И #2064.
Changed
- Изменения
url_forВозвращение a.URLinstance #1385.
Fixed
- Allow "name" argument on
url_for()andurl_path_for()#2050.
Deprecated
- Derecate
on_startupИon_shutdownevents #2070.
0.25.0
14 февраля 2023 года
Fix
- Limit the number of fields and files When parsing
multipart/form-dataon theMultipartParser8c74c2c and #2036.
0.24.0
6 февраля 2023 года
Добавленные
- Allow
StaticFilesto flow symlinks #1683. - Allow
Request.form()as a context manager #1903. - Add Add
sizeattribute toUploadFile#1405. - Add
env_prefixАргумент дляConfig#1990. - Добавить текстовый процессор #1904.
- поддерживает
strиdatetimeнаexpiresparameter on theResponse.set_cookiemethod #1908.
Changed
- Lazily build the middleware stack #2017.
- Make the
fileargument required onUploadFile#1413. - Use debug extension instead of custom response template extension #1991.
Фиксированный
- Fix url parsing of ipv6 urls on
URL.replace#1965.
0.23.1
9 декабря 2022 года
Фиксированный
- Only Stop Receiving Stream on
body_streamif body is empty on theBaseHTTPMiddleware#1940.
0.23.0
5 декабря 2022 года
Добавленные
- Добавить параметры
headersвTestClient#1966.
Устарело.
- отказался от
StarletteиRouter#1897.
Фиксированный
- Ремонт
FloatConvertorОшибка #1973 в регулярном выражении.
0.22.0
17 ноября 2022 г.
Изменился.
- обходит
GZipMiddleware, когда ответ содержитContent-Encoding#1901.
Фиксированный
- удаляет ненужный
unquote()из параметров запроса наTestClient#1953. - гарантирует, что
MutableHeaders._listна самом деле являетсяlist#1917. - совместим с следующей версией
AnyIO#1936.
0.21.0
26 сентября 2022 года
Эта версия заменяет базовый HTTP-клиент (requests), используемый на TestClient. :arrow_right: httpx), ваш тестовый пакет может быть прерван из-за того, что API этих клиентов немного отличаются. Чтобы сделать миграцию более плавной, вы можете использовать инструмент bump-testclient.
Изменить (или: изменить)
- в
TestClient#1376 заменитьrequestsxhttpx
Добавленные
- Add
WebSocketExceptionand Support for WebSocket exception handlers #1263. - добавляет параметры
middlewareдляMountclass #1649. - Officially Support Python 3.11 #1863.
- Implement
__repr__for route classes #1864.
Fixed
- Fix bug on which
BackgroundTaskswere cancelled when usingBaseHTTPMiddlewareand client disconnected #1715.
0.20.4
28 июня 2022 года
Fixed
- Remove converter from path when generating OpenAPI schema #1648.
0.20.3
10 июня 2022 года
Fixed
- Revert "Allow
StaticFilesto Follow symlinks"#1681.
0.20.2
Июнь 7, 2022
Фиксированный
0.20.1
28 мая 2022 года
Фиксированный
- Improve detection of async callables #1444.
- Send 400 (Bad Request) When
boundaryis missing #1617. - Send 400 (Bad Request) When missing "name" field on
Content-Dispositionheader #1643. - Do not send empty data to
StreamingResponseonBaseHTTPMiddleware#1609. - Add
__bool__dunder forSecret#1625.
0.20.0
3 мая 2022 года
Removed
0.19.1
22 апреля 2022 года
Фиксированный
- Fix inference of
Route.namewhen created from methods #1553. - Avoid
TypeErroronwebsocket.disconnectwhen code isNone#1574.
Устарело.
- Deprecate
WS_1004_NO_STATUS_RCVDandWS_1005_ABNORMAL_CLOSUREin favor ofWS_1005_NO_STATUS_RCVDandWS_1006_ABNORMAL_CLOSURE, as the presidants dn't match the WebSockets specs #1580.
0.19.0
9 марта 2022 года
Добавленные
- Error handler будет всегда работать, even if the error happens on a background task #761.
- Add Add
headersПараметр дляHTTPException#1435. - Internal Responses with
405status code insert anAllowheader, as described by RFC 7231 #1436. - В
JSONResponseВ.contentПараметр теперь является обязательным #1431. - Добавлена регистрация пользовательского URL конвертера #1437.
- добавляет параметр типа обработки контента в
FileResponse#1266. - В разделе Укракер #920 добавьте следующий параметр запроса вместе с URL-адресом исходного запроса.
- добавляет
raw_pathв диапазонTestClient#1445. - Добавление оператора объединения к
MutableHeaders#1240. - Отображение отсутствующих сведений о трассе на странице отладки #1363.
- изменил диапазон версий, необходимых для
anyio, на>=3.4.0,<5.0#1421 и #1460. - добавляет требования к
typing-extensions>=3.10-#1475 используется только в версиях ниже Python 3.10.
Фиксированный
- не позволяет
BaseHTTPMiddlewareскрывать ошибкиStreamingResponseи установленного приложения #1459. SessionMiddlewareИспользование явноpath=...Вместо значения root_path #1512 ASGI по умолчанию.Request.clientСоответствует стандарту ASGI #1462.- был повышен до
KeyError, чтобы устранить отсутствующую границу #1349.
Устарело.
0.18.0
Июнь 23, 2022
Added
- Change default chunk size from 4Kb to 64Kb on
FileResponse#1345. - Add Support for
functools.partialinWebSocketRoute#1356. - Add
StaticFilespackages with directory #1350. - Allow environment options in
Jinja2Templates#1401. - Allow HEAD method on
HttpEndpoint#1346. - Accept Additional headers on
websocket.acceptmessage #1361 И #1422. - Add
reasontoWebSocketclose ASGI event #1417. - Add headers attribute to
UploadFile#1382. - Don't omit
Content-Lengthheader forContent-Length: 0cases #1395. - Don't set headers for Responses with 1xx, 204 и 304 status code #1397.
SessionMiddleware.max_ageтеперь acceptsNone, so cookie can last as long as the browser session #1387.
Фиксированный
- Tweak
hashlib.md5()function onFileResponses generation ETag. The parameterusedforsecurityflag is set toFalseif the flag is available on the system. This fixes an error raised on systems with FIPS enabled #1366 and #1410 - Fix
path_paramstype onurl_path_for()method i.e. turnstrintoAny#1341. Hostnow ignoresporton routing #1322.
0.17.1
17 ноября 2021 года
Фиксированный
- Fix
IndexErrorin authenticationrequireswhen wrapped function arguments are distributed between*argsand**kwargs#1335.
0.17.0
4 ноября 2021 г.
Добавленные
Response.delete_cookieСейчас смотрите на параметеры-параметры какResponse.set_cookie#1228.- Update the
Jinja2Templatesconstructor to allowPathLike#1292.
Фиксированный
- Fix BadSignature exception handling in SessionMiddleware #1264.
- Change
HTTPConnection.__getitem__return type fromstrtotyping.Any#118. - Изменения
ImmutableMultiDict.getlistВозврат из группыtyping.List[str]Дляtyping.List[typing.Any]#1235. - Handle
OSErrorexceptions onStaticFiles#1220. - Fix
StaticFiles404.html in HTML mode #1314. - Prevent anyio.ExceptionGroup in error views Under a BaseHTTPMiddleware #1262.
Removed
- Remove GraphQL support #1198.
0.16.0
19 июля 2021 г.
Добавленные
Фиксированный
starlette.websockets.WebSocketinstances are now hashable and compare by identity #1039- A number of fixes related to running task groups in lifespan #1213,#1227
Deprecated/removed
- The method
starlette.templates.Jinja2Templates.get_envwas removed #1218 - The ClassVar
starlette.testclient.TestClient.async_backendwas removed, the backend is now configured using constructor kwargs x #1211 - Passing an Async Generator Function or a Generator Function to
starlette.routing.Router(lifespan=)is deprecated. You should wrap your lifespan in@contextlib.asynccontextmanager.#1227 #1110
0.15.0
Июнь 23, 2021
Эта версия существенно изменила базовую асинхронную часть Starlette. Поэтому Starlette теперь полагается на AnyIO и претерпевает небольшие изменения в API. Еще одним важным изменением в этой версии является отказ от встроенной поддержки GraphQL.
Добавленные
- Starlette теперь поддерживает Trio в качестве асинхронного времени выполнения через AnyIO-#1157.
TestClient.websocket_connect()Теперь необходимо использовать в качестве контекстного менеджера.- Предварительная поддержка Python 3.10-#1201.
Уровень сжатия, используемый* в
GZipMiddleware, теперь регулируется-#1128.
Фиксированный
Некоторые исправления* к CORSMiddleware. См.#1111,#112,#1113,#1199.
* Улучшение сообщений об исключениях при появлении повторяющихся имен параметров пути-#1177.
* RedirectResponse теперь использует код quote вместо кода quote_plus в голове Location, чтобы лучше соответствовать поведению в других фреймворках, таких как Django-#1164.
* В большинстве случаев причины исключения теперь сохраняются-#1158.
* В случае монтирования приложения, сеансовые файлы Cookie теперь используют корневой путь ASGI-#1147.
* Исправлена ошибка, связанная с нарушением кэша при удалении статического файла в определенных ситуациях-#1023.
* улучшает использование памяти BaseHTTPMiddleware при обработке больших ответов-Исправлено #1012 с #1157
Исключено/удалено
- Built-in GraphQL Support via the
GraphQLAppclass has deprecated and will be removed in a future release. Пожалуйста, смотрите #619. GraphQL is not supported on Python 3.10. - The
executorparameter toGraphQLAppwas removed. Используйтеexecutor_classinstead. - The
workersparameter toWSGIMiddlewarewas removed. This hasn't had any effect since Starlette v0.6.3.
0.14.2
Февраль 2, 2021
Fixed
- Fixed
ServerErrorMiddlewarecompatibility with Python 3.9.1/3.8.7 When debug mode is enabled -#1132. - Fixed unclosed socket
ResourceWarnings When using theTestClientwith WebSocket endpoints -#1132. - Improved detection of
asyncendpoints wrapped infunctools.partialна Python 3.8+-#1106.
0.14.1
9 ноября 2020 г.
Removeded
UJSONResponsewas removed (This change was intended to be included in 0.14.0), пожалуйста, увижу это Документация Для того, чтобы выполнить задачу: ответить на вопрос, чтобы удовлетворить потребности в JSON #1074.
0.14.0
8 ноября, 2020 г.
Добавленные
- Starlette now officially supports Python3.9.
- In
StreamingResponse, allow custom async iterator that objects from classes implementing__aiter__. - Allow usage of
functools.partialasync handlers in Python versions 3.6 и 3.7 - I'm A Teapot status code.
Changed
- Create tasks from handler coroutines before sending them to
asyncio.wait. - Use
format_exceptioninstead offormat_tbinServerErrorMiddleware'sdebugresponses. - Be more lenient with handler arguments When using the
requiresdecorator.
0.13.8
-
Revert
Queue(maxsize=1)fix дляBaseHTTPMiddlewaremiddleware classes and streaming responses. -
The
StaticFilesconstructor Now allowspathlib.Pathin addtion to strings for itsdirectoryargument.
0.13.7
- Fix High Memory usage When using
BaseHTTPMiddlewaremiddleware classes and streaming responses.
0.13.6
- Fix 404 errors with
StaticFiles.
0.13.5
- добавлена поддержка функций
Starlette(lifespan=...). - Более мощная проверка пути в приложении StaticFiles.
- Исправлена кодировка WSGI PATH_INFO.
- RedirectResponse теперь принимает дополнительный параметр background
- Разрешить маршрутизацию пути, содержащую метасимволы регулярного выражения
- Рассматривайте «body» в ASGI HTTP как необязательный ключ.
- Не используйте пул потоков для записи загруженных файлов в память.
0.13.0
- Переключитесь везде, чтобы облегчить настройку приложений в стиле инициализации. Это означает отказ от стиля декора в пользу декларативной таблицы маршрутизации и определения промежуточных компонентов.
0.12.12
- Исправляет проблему
request.url_for()в случае «вложенной установки».
0.12.11
- восстанавливает
request.url_for()при использовании ASGIroot_path.
0.12.1
- Добавить
URL.include_query_params(**kwargs) - Добавить
URL.replace_query_params(**kwargs) - Добавить
URL.remove_query_params(param_names) request.stateПравильно сохраняется в промежуточных элементах.- добавил интерфейс
request.scope.
0.12.0
- Перейти в ASGI 3.0.
- Ремонт промежуточного оборудования CORS.
- Add
StaticFiles(html=True)support. - Fix path quoting in redirect responses.
0.11.1
- Add
request.stateinterface, for Storing arbitrary addtional information. - Support disabling GraphiQL с
GraphQLApp(..., graphiql=False).
0.11.0
DatabaseMiddlewareУже сейчас dropped in favour ofdatabases- Templates are no longer configured on the application instance. Use
templates = Jinja2Templates(directory=...)andreturn templates.TemplateResponse('index.html', {"request": request}) - Schema generation is no longer attached to the application instance. Use
schemas = SchemaGenerator(...)andreturn schemas.OpenAPIResponse(request=request) LifespanMiddlewareis dropped in favor of router-based Lifespan handling.- Application instances Now accept a
routesАрголь,Starlette(routes=[...]) - Схема generation now includes mounted routes.
0.10.6
- Add Add
Lifespanrouting component.
0.10.5
- Ensure
templatingdoes not strictly requirejinja2to be installed.
0.10.4
- Templates are now configured independently from the application instance.
templates = Jinja2Templates(directory=...)-Existing API remains in place, but is no longer documented, and will be deprecated in due course. See the template documentation for more details.
0.10.3
- Move to Independent
databasespackage instead ofDatabaseMiddleware. Existing API remains in place, but is no longer documented, and will be deprecated in due course.
0.10.2
- Don't drop explicit port numbers on redirects from
HTTPSRedirectMiddleware.
0.10.1
- Добавлена поддержка базы данных MySQL.
- Добавление маршрутизации на основе сервера.
0.10.0
- WebSockets теперь отправляет/получает JSON по умолчанию через текстовые кадры данных. Для двоичного разделения кадров используются
.send_json(data, mode="binary")и.receive_json(mode="binary"). GraphQLAppтеперь принимает параметрexecutor_class, который должен быть отдан, а не существующему параметруexecutor. Устранена проблема с инстанцированием асинхронного привода перед настройкой цикла событий. Ожидается, что параметрexecutorбудет исключен из следующей средней или большой версии. Аутентификация и@requiresтеперь поддерживают конечные точки WebSocket. КлассыMultiDictиImmutableMultiDictдоступны вuvicorn.datastructures.QueryParamsтеперь копируется с использованием параметра*args, **kwargsв стандартном стиле словаря.
0.9.11
- Сеантные файлы Cookie теперь включают в себя «expires» браузера в дополнение к существующему сроку действия подписи.
request.form()Теперь возвращаемся к многословному интерфейсу.- При появлении нескольких одинаковых ключевых элементов, выполнение параметра запроса Многословарный словарь теперь для
.keys()、.values()и.items()То, что они могут более точно отражать.dict。 - использует
urlsplitвместоurlparseна протяжении всего процесса.
0.9.10
- поддерживает
@requires(...)в методах классов. - Применяет переход URL-адреса к данным формы.
- автоматически поддерживает запросы
HEAD. - добавляет
await request.is_disconnected(). - Передача operationName исполнителям GraphQL.
0.9.9
- добавляет
TemplateResponse. - Add datype
CommaSeparatedStrings. - Add
BackgroundTasksfor multiple tasks. - Common subclass for
RequestandWebSocket, to eg. sharesessionfunctionality. - Expose Remote address with
request.client.
0.9.8
- Add
request.database.executemany.
0.9.7
- Ensure that
AuthenticationMiddlewarehandles lifespan messages correctly.
0.9.6
- Add
AuthenticationMiddleware, and@requires()decorator.
0.9.5
- Support either
strorSecretforSessionMiddleware(secret_key=...).
0.9.4
- Add
config.environ. - Add
datastructures.Secret. - Add
datastructures.DatabaseURL.
0.9.3
- Add Add
config.Config(".env")
0.9.2
- Дополнительная поддержка базы данных.
- Add
requestto GraphQL context. - Hide any Password component in
URL.__repr__.
0.9.1
- Handle startup/shutdown errors property.
0.9.0
TestClientможет быть теперь used как context manager, instead ofLifespanContext.- Lifespan is Now handled as middleware. Startup and Shutdown events are visible throughout the middleware stack.
0.8.8
- Better support for third-party API schema generators.
0.8.7
- Поддержка chunked requests with Testclient.
- Cleanup asyncio tasks properly with WSGIMiddleware.
- Support using TestClient within endpoints, for service mocking.
0.8.6
- Session Cookies are Now set on the root path.
0.8.5
- Поддержка URL конвертера.
- поддерживает ответы кэша HTTP 304 от
StaticFiles. - Устранение проблем с экранированием символов в данных формы.
0.8.4
- По умолчанию в ответе тело пустое.
0.8.3
- добавляет параметр "name" в
@app.route(). - Используйте заголовок "Host" для восстановления URL-адреса.
0.8.2
Статический файл
- StaticFiles больше не читает файлы в ответ на запрос
HEAD.
0.8.1
Шаблоны
- Используйте Jinja2 для добавления конфигурации шаблона по умолчанию.
Допускается следующее:
app = Starlette(template_directory ="templates")
app.route ('/')
async def homepage(request):
`url_for` is available in the template.
template = app.get_template ('index.html')
content = template.render (request=request)
HTMLResponse(content)
0.8.0
Исключения
- добавлена поддержка
@app.exception_handler(404). - Убедитесь, что обработанные исключения не рассматриваются стеком промежуточных продуктов как ошибки.
Промежуточный файл сеанса
- Add
max_age, and use timestamp-signed Cookies. Defaults to Two weeks.
Cookies
- Ensure Cookies являются strictly HTTP correct.
StaticFiles
- Check Directory exists on instantiation.
0.7.4
Concurrency
- Add
starlette.concurrency.run_in_threadpoolСейчас handlescontextvarsupport.
0.7.3
Routing
- Add
name=Support toapp.mount(). This allows eg:app.mount('/static', StaticFiles(directory='static'), name='static').
0.7.2
Middleware
- Add Support for
@app.middleware("http")decorator.
Routing
- Добавить "endpoint" в ASGI scope.
0.7.1
Debug tracebacks
- Improve debug traceback information & styling.
URL routing
- Support mounted URL lookups with "path=", eg.
url_for('static', path=...). - Support nested URL lookups, eg.
url_for('admin:user', username=...). - Add redirect slashes support.
- Add www.redirect support.
Background Tasks
- Add background task support to
FileResponseandStreamingResponse.
0.7.0
API Schema support
- Add
app.schema_generator = SchemaGenerator(...). - Add property
app.schema. - Add
OpenAPIResponse(...).
GraphQL routing
- Drop
app.add_graphql_route("/", ...)in favor of more consistentapp.add_route("/", GraphQLApp(...)).
0.6.3
Routing API
- Поддерживайте рутину для методов.
- Ensure
url_path_forworks with Mount ('/{some_path_params}'). - Fix Router(default=) argument.
- Support repeated paths, like:
@app.route("/", methods=["GET"]),@app.route("/", methods=["POST"]) - Использовать default ThreadPoolExecutor for all sync endpoints.
0.6.2
SessionMiddleware
Добавлена поддержка request.session, а также SessionMiddleware.
0.6.1
BaseHTTP промежуточный элемент
Добавлена поддержка BaseHTTPMiddleware, которая предоставляет стандартный интерфейс запроса/ответа с помощью обычного промежуточного программного обеспечения ASGI.
Это означает, что вы можете написать промежуточное ПО ASGI, оставаясь при этом на уровне запроса/ответа, а не непосредственно обрабатывать сообщения ASGI.
from Starlette.applications import Starlette
from starlette. middleware.base import BaseHTTPMiddleware
Customclass Middleware (BaseHTTPMiddleware):
async def dispatch(self, request, call_next):
Ответ: await call_next (request)
response.headers ['Custom-Header']= 'Example'
Возвращение ответа
app = Starlette()
app. add_middleware (CustomMiddleware)
0.6.0
Запрос. path_params
0.6Самое большое изменение заключается в том, что конечная подпись больше не является:
async def func(request: Request, **kwargs) -> Response
Вместо этого мы просто используем:
async def func(request: Request) -> ответ
Параметры пути доступны в запросе в виде request.path_params.
Это отличается от большинства веб-фреймворков Python, но я думаю, что в конечном итоге он будет более скоординированным на протяжении всего процесса.
request.url_for (
Запрос (Request) и WebSocketSession теперь поддерживают инверсию URL с помощью request.url_for(name, **path_params). Этот метод возвращает полностью соответствующий экземпляр URL. Экземпляр URL-адреса является строковым объектом.
app. url_path_for ()(английское выражение может быть обозначенным именем функции или метода в технической области, а в китайском контексте иногда сохраняется английское выражение оригинала, чтобы обеспечить точность и профессионализм. Поэтому перевод здесь напрямую сохраняет английскую форму оригинала)
Приложение теперь поддерживает инвертирование URL-путей с помощью app.url_path_for(name, **path_params). Этот метод возвращает экземпляр URL с указанием пути и схемы. Экземпляр URL-адреса является строковым объектом, который, если его принудительно преобразовать в строку, возвращает только путь.
app. Маршрут
Теперь приложение поддерживает параметр .routes, который возвращает список [Route|WebSocketRoute|Mount].
Маршрутизация, WebSocket, монтирование
Компоненты низкого уровня до Router теперь соответствуют подписям @app.route(),@app.websocket_route() и app.mount().