Перейти к содержанию

Примечания к выпуску

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 bytes to _RequestData type #2510.

Фиксированный

  • Revert "Turn scope["client"] to None on TestClient(#2377)"#2525.
  • Remove deprecated app argument passed to httpx.Client on the TestClient #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.Event on async context #2459.

0.36.2

3 февраля 2024 года

Фиксированный

  • Upgrade python-multipart to 0.0.7 13e5c26.
  • Avoid duplicate charset on Content-Type #2443.

0.36.1

Июнь 23, 2024

Фиксированный

  • Check if "extensions" in scope before checking the extension #2438.

0.36.0

Июнь 22, 2024

Добавленные

  • Add Support for ASGI pathsend extension #2435.
  • Cancel WebSocketTestSession on close #2427.
  • Raise WebSocketDisconnect when WebSocket.send() excepts IOError #2425.
  • Raise FileNotFoundError when the env_file parameter on Config is not valid #2422.

0.35.1

Январь 11, 2024

Фиксированный

  • Stop using the deprecated method" parameter in FileResponse inside of StaticFiles" #2406.
  • Make typing-extensions optional 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__ to HTTPException and WebSocketException #2181.
  • Warn users When using lifespan together with on_startup/on_shutdown #2193.
  • Collect routes from Host to generate the OpenAPI schema #2183.
  • Add request argument to TemplateResponse #2191.

Фиксированный

  • Stop body_stream in case more_body=False on BaseHTTPMiddleware #2194.

0.28.0

Июнь 7, 2023

Переменный

  • Reuse Request's body buffer for call_next in BaseHTTPMiddleware #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

Фиксированный

  • на StaticFiles 1797de4 заменил commonprefix commonpath.
  • Преобразовать 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

Changed

  • Изменения url_for Возвращение a. URL instance #1385.

Fixed

  • Allow "name" argument on url_for() and url_path_for() #2050.

Deprecated

  • Derecate on_startup И on_shutdown events #2070.

0.25.0

14 февраля 2023 года

Fix

  • Limit the number of fields and files When parsing multipart/form-data on the MultipartParser 8c74c2c and #2036.

0.24.0

6 февраля 2023 года

Добавленные

  • Allow StaticFiles to flow symlinks #1683.
  • Allow Request.form() as a context manager #1903.
  • Add Add size attribute to UploadFile #1405.
  • Add env_prefix Аргумент для Config #1990.
  • Добавить текстовый процессор #1904.
  • поддерживает str и datetime на expires parameter on the Response.set_cookie method #1908.

Changed

  • Lazily build the middleware stack #2017.
  • Make the file argument required on UploadFile #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_stream if body is empty on the BaseHTTPMiddleware #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 заменить requests x httpx

Добавленные

  • Add WebSocketException and Support for WebSocket exception handlers #1263.
  • добавляет параметры middleware для Mount class #1649.
  • Officially Support Python 3.11 #1863.
  • Implement __repr__ for route classes #1864.

Fixed

  • Fix bug on which BackgroundTasks were cancelled when using BaseHTTPMiddleware and 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 StaticFiles to Follow symlinks"#1681.

0.20.2

Июнь 7, 2022

Фиксированный

  • Fix regression on route paths with colons #1675.
  • Allow StaticFiles to Follow symlinks #1337.

0.20.1

28 мая 2022 года

Фиксированный

  • Improve detection of async callables #1444.
  • Send 400 (Bad Request) When boundary is missing #1617.
  • Send 400 (Bad Request) When missing "name" field on Content-Disposition header #1643.
  • Do not send empty data to StreamingResponse on BaseHTTPMiddleware #1609.
  • Add __bool__ dunder for Secret #1625.

0.20.0

3 мая 2022 года

Removed

  • Drop Python 3.6 Поддержка #1357 И #1616.

0.19.1

22 апреля 2022 года

Фиксированный

  • Fix inference of Route.name when created from methods #1553.
  • Avoid TypeError on websocket.disconnect when code is None #1574.

Устарело.

  • Deprecate WS_1004_NO_STATUS_RCVD and WS_1005_ABNORMAL_CLOSURE in favor of WS_1005_NO_STATUS_RCVD and WS_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 405 status code insert an Allow header, 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.

Устарело.

  • Deprecate WSGIMiddleware in favor of a2wsgi #1504.
  • Deprecate run_until_first_complete #1443.

0.18.0

Июнь 23, 2022

Added

  • Change default chunk size from 4Kb to 64Kb on FileResponse #1345.
  • Add Support for functools.partial in WebSocketRoute #1356.
  • Add StaticFiles packages with directory #1350.
  • Allow environment options in Jinja2Templates #1401.
  • Allow HEAD method on HttpEndpoint #1346.
  • Accept Additional headers on websocket.accept message #1361 И #1422.
  • Add reason to WebSocket close ASGI event #1417.
  • Add headers attribute to UploadFile #1382.
  • Don't omit Content-Length header for Content-Length: 0 cases #1395.
  • Don't set headers for Responses with 1xx, 204 и 304 status code #1397.
  • SessionMiddleware.max_age теперь accepts None, so cookie can last as long as the browser session #1387.

Фиксированный

  • Tweak hashlib.md5() function on FileResponse s generation ETag. The parameter usedforsecurity flag is set to False if the flag is available on the system. This fixes an error raised on systems with FIPS enabled #1366 and #1410
  • Fix path_params type on url_path_for() method i.e. turn str into Any #1341.
  • Host now ignores port on routing #1322.

0.17.1

17 ноября 2021 года

Фиксированный

  • Fix IndexError in authentication requires when wrapped function arguments are distributed between *args and **kwargs #1335.

0.17.0

4 ноября 2021 г.

Добавленные

  • Response.delete_cookie Сейчас смотрите на параметеры-параметры как Response.set_cookie #1228.
  • Update the Jinja2Templates constructor to allow PathLike #1292.

Фиксированный

  • Fix BadSignature exception handling in SessionMiddleware #1264.
  • Change HTTPConnection.__getitem__ return type from str to typing.Any #118.
  • Изменения ImmutableMultiDict.getlist Возврат из группы typing.List[str] Для typing.List[typing.Any] #1235.
  • Handle OSError exceptions on StaticFiles #1220.
  • Fix StaticFiles 404.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.WebSocket instances 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_env was removed #1218
  • The ClassVar starlette.testclient.TestClient.async_backend was 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 GraphQLApp class has deprecated and will be removed in a future release. Пожалуйста, смотрите #619. GraphQL is not supported on Python 3.10.
  • The executor parameter to GraphQLApp was removed. Используйте executor_class instead.
  • The workers parameter to WSGIMiddleware was removed. This hasn't had any effect since Starlette v0.6.3.

0.14.2

Февраль 2, 2021

Fixed

  • Fixed ServerErrorMiddleware compatibility with Python 3.9.1/3.8.7 When debug mode is enabled -#1132.
  • Fixed unclosed socket ResourceWarning s When using the TestClient with WebSocket endpoints -#1132.
  • Improved detection of async endpoints wrapped in functools.partial на Python 3.8+-#1106.

0.14.1

9 ноября 2020 г.

Removeded

  • UJSONResponse was 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.partial async 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_exception instead of format_tb in ServerErrorMiddleware's debug responses.
  • Be more lenient with handler arguments When using the requires decorator.

0.13.8

  • Revert Queue(maxsize=1) fix для BaseHTTPMiddleware middleware classes and streaming responses.

  • The StaticFiles constructor Now allows pathlib.Path in addtion to strings for its directory argument.

0.13.7

  • Fix High Memory usage When using BaseHTTPMiddleware middleware 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() при использовании ASGI root_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.state interface, for Storing arbitrary addtional information.
  • Support disabling GraphiQL с GraphQLApp(..., graphiql=False).

0.11.0

  • DatabaseMiddleware Уже сейчас dropped in favour of databases
  • Templates are no longer configured on the application instance. Use templates = Jinja2Templates(directory=...) and return templates.TemplateResponse('index.html', {"request": request})
  • Schema generation is no longer attached to the application instance. Use schemas = SchemaGenerator(...) and return schemas.OpenAPIResponse(request=request)
  • LifespanMiddleware is 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 Lifespan routing component.

0.10.5

  • Ensure templating does not strictly require jinja2 to 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 databases package instead of DatabaseMiddleware. 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 BackgroundTasks for multiple tasks.
  • Common subclass for Request and WebSocket, to eg. share session functionality.
  • Expose Remote address with request.client.

0.9.8

  • Add request.database.executemany.

0.9.7

  • Ensure that AuthenticationMiddleware handles lifespan messages correctly.

0.9.6

  • Add AuthenticationMiddleware, and @requires() decorator.

0.9.5

  • Support either str or Secret for SessionMiddleware(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 request to 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 of LifespanContext.
  • 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 Сейчас handles contextvar support.

0.7.3

Routing

  • Add name= Support to app.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 FileResponse and StreamingResponse.

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 consistent app.add_route("/", GraphQLApp(...)).

0.6.3

Routing API

  • Поддерживайте рутину для методов.
  • Ensure url_path_for works 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().