Catatan Rilis
0.38.2
27 Juli 2024
diperbaiki
- tidak berasumsi bahwa semua rutinitas memiliki
__name__padarouting.get_name()# 2648.
0.38.1
23 Juli 2024
Dihapus
- Kembalikan "Tambahkan dukungan untuk ekstensi pathsend ASGI" # 2649.
0.38.0
20 Juli 2024
ditambahkan
- memungkinkan penggunaan
memoryviewdalamStreamingResponsedanResponse# 2576 dan # 2577. - Saat di
StaticFiles# 2583 Ketika nama file yang diminta terlalu panjang, kirim 404, bukan 500.
Ubah (atau: ubah)
- gagal dengan cepat pada parameter instantiasi
Jinja2Templatetidak valid # 2568. - Periksa pawang titik akhir secara asinkron hanya sekali # 2536.
diperbaiki
- menambahkan sinkronisasi yang tepat ke
WebSocketTestSession# 2597.
0.37.2
5 Maret 2024
ditambahkan
- Tambahkan
byteske tipe_RequestData# 2510.
diperbaiki
- Kembalikan "Ubah
scope["client"]menjadiNonepadaTestClient(# 2377)"# 2525. - Hapus argumen
appyang sudah tidak digunakan lagi diteruskan kehttpx.ClientpadaTestClient# 2526.
0.37.1
9 Februari 2024
Diperbaiki
- Peringatan alih-alih menaikkan untuk file env yang hilang di
Config# 2485 Ya.
0.37.0
5 Februari 2024
Ditambahkan
- Mendukung WebSocket Denial Response ekstensi ASGI # 2041.
0.36.3
4 Februari 2024
Diperbaiki
- Membuat
anyio.EventPada konteks async # 2459 Ya.
0.36.2
3 Februari 2024
Diperbaiki
0.36.1
23 Januari 2024
Diperbaiki
- Periksa apakah "ekstensi" dalam ruang lingkup sebelum memeriksa ekstensi # 2438.
0.36.0
22 Januari 2024
ditambahkan
- Menambahkan dukungan untuk ASGI
pathsendEkstensi # 2435 Ya. - Membatalkan
WebSocketTestSessionDi dekat # 2427 Ya. - Naikkan
WebSocketDisconnectKapanWebSocket.send()AturanIOError# 2425 Ya. - Naikkan
FileNotFoundErrorKapanenv_fileParameter aktifConfigTidak valid # 2422 Ya.
0.35.1
11 Januari 2024
diperbaiki
- Berhenti menggunakan parameter "metode" yang sudah tidak digunakan lagi di
FileResponseDi dalamStaticFiles# 2406 Ya. - Membuat
typing-extensionsopsional lagi # 2409.
0.35.0
11 Januari 2024
ditambahkan
- menambahkan
*argskeMiddlewaredan meningkatkan petunjuk jenisnya # 2381.
diperbaiki
- Gunakan
Iterablesebagai penggantiIteratorpadaiterate_in_threadpool# 2362
perubahan
- menangani
root_pathuntuk mempertahankan kompatibilitas dengan aplikasi ASGI terinstal dan WSGI # 2400. - mengubah
scope["client"]menjadiNonediTestClient# 2377
0.34.0
16 Desember 2023
ditambahkan
- menggunakan
ParamSpecuntukrun_in_threadpool# 2375. - Tambahkan
UploadFile.__repr__# 2360.
diperbaiki
- menggabungkan URL dengan benar pada
TestClient# 2376. - mempertimbangkan ETag yang lemah pada
StaticFiles# 2334.
ketinggalan jaman
- menggambarkan parameter
FileResponse(method=...)# 2366.
0.33.0
1 Desember 2023
ditambahkan
- masing-masing
Route/WebSocketRoutemenambahkanmiddleware# 2349. - menambahkan
middleware# 2351 perRouter.
diperbaiki
- Jangan menimpa
"path"dan"root_path"Kunci rentang # 2352. - mengatur
ensure_ascii=Falsepadajson.dumps()untukWebSocket.send_json()# 2341.
0.32.0 post1
5 November 2023
diperbaiki
- Jatuh kembali mkdocs-material dari 9.1.17 ke 9.4.7 # 2326.
0.32.0
4 November 2023
ditambahkan
- mengirimkan
reason# 2309 padaWebSocketDisconnect. - menambahkan parameter
domainkeSessionMiddleware# 2280.
Mengubah; mengubah; mengubah
- mewarisi dari
HTMLResponsebukanResponsepada_TemplateResponse# 2274. - mengembalikan anotasi tipe
Response.renderke keadaan0.31.0 # 2264.
0.31.1
26 Agustus 2023
diperbaiki
- memperbaiki kesalahan impor # 2231 ketika
exceptiongrouptidak tersedia. - menetapkan variabel global
url_for# 2230 untuk lingkungan Jinja kustom.
0.31.0
24 Juli 2023
ditambahkan
- Secara resmi mendukung Python 3.12 # 2214.
- Mendukung AnyIO 4.0 # 2211.
- Ketik ketat Starlette beranotasi (mode ketat pada myPy)# 2180.
Diperbaiki
- Jangan mengelompokkan header duplikat pada string tunggal saat menggunakan
TestClient# 2219.
0.30.0
13 Juli 2023
Dihapus
- Drop Python 3.7 mendukung # 2178.
0.29.0
13 Juli 2023
Ditambahkan
- Tambahkan parameter
follow_redirectskeTestClient# 2207. - Menambahkan
__str__UntukHTTPExceptiondanWebSocketException# 2181 Ya. - Peringatan pengguna saat menggunakan
lifespanBersama denganon_startup/on_shutdown# 2193 Ya. - Kumpulkan rute dari
HostUntuk menghasilkan skema OpenAPI # 2183 Ya. - Menambahkan
requestArgumen untukTemplateResponse# 2191 Ya.
diperbaiki
- Hentikan!
body_streamDalam kasusmore_body=FalsePadaBaseHTTPMiddleware# 2194 Ya.
0.28.0
7 Juni 2023
Berubah
- Gunakan kembali buffer tubuh
Requestuntuk panggilan _ berikutnya diBaseHTTPMiddleware# 1692. - Memindahkan logika ke penanganan pengecualian
Route# 2026 Ya.
ditambahkan
- menambahkan parameter
envkeJinja2Templatesdan mendeprecates**env_options# 2159. - Tambahkan pesan kesalahan eksplisit # 2177 saat
httpxtidak terinstal.
diperbaiki
- memungkinkan penggunaan parameter "nama" pada
templates url_for()# 2127.
0.27.0
16 Mei 2023
Rilis ini memperbaiki kerentanan traversal jalur dalam StaticFiles. Anda dapat melihat buletin keamanan penuh: https://github.com/encode/starlette/security/advisories/GHSA-v5gw-mw7f-84px
ditambahkan
- menyusutkan JSON WebSocket data dengan
send_json, lihat https://github.com/encode/starlette/pull/2128
diperbaiki
- ada
StaticFilesPada 1797de4, willcommonprefixGanti dengancommonpath... - Mengubah ImportErrors menjadi ModuleNotFoundError # 2135.
- Perbaiki konten pesan RuntimeError di websockets # 2141.
0.26.1
13 Maret 2023
diperbaiki
- Perbaiki jenis Lifespan di Starlette # 2077 untuk memungkinkan subkelasnya.
0.26.0 post1
9 Maret 2023
Diperbaiki
- Ganti referensi dari Peristiwa ke Lifespan di mkdocs.yml # 2072.
0.26.0
9 Maret 2023
Ditambahkan
- Dukungan Negara seumur hidup # 2060, # 2065 dan # 2064 Ya.
Berubah
- Ubah tanda tangan
url_foruntuk mengembalikan contohURL# 1385.
Diperbaiki
- Izinkan argumen "nama" pada
url_for()danurl_path_for()# 2050.
Ditinggalkan
- Mengusir
on_startupdanon_shutdownAcara # 2070 Ya.
0.25.0
14 Februari 2023
Diperbaiki
- Batasi jumlah bidang dan file saat mengurai
multipart/form-dataDi atasMultipartParser8C74C2C dan # 2036 Ya.
0.24.0
6 Februari 2023
ditambahkan
- Izinkan
StaticFilesuntuk mengikuti symlink # 1683. - Allow
Request.form()sebagaimanajer konteks # 1903. - Menambahkan
sizeAtribut untukUploadFile# 1405 Ya. - Tambahkan argumen
env_prefixkeConfig# 1990. - Tambahkan prosesor konteks template # 1904 Ya.
- Mendukung
strdandatetimepada parameterexpirespada metodeResponse.set_cookie# 1908.
Berubah
- Dengan malas membangun tumpukan middleware # 2017.
- Membuat argumen
fileyang diperlukan padaUploadFile# 1413. - Gunakan ekstensi debug alih-alih ekstensi template respons khusus # 1991 Ya.
diperbaiki
- Fixed url parsing dari ipv6 url pada
URL.replace# 1965.
0.23.1
9 Desember 2022
diperbaiki
- Hanya berhenti menerima aliran pada
body_streamjika tubuh kosong diBaseHTTPMiddleware# 1940.
0.23.0
5 Desember 2022
ditambahkan
- Menambahkan
headersParameter untukTestClient# 1966 Ya.
ketinggalan jaman
- mencela
StarlettedanRouterdekorator # 1897.
diperbaiki
- Perbaiki kesalahan pada
FloatConvertorekspresi reguler # 1973.
0.22.0
17 November 2022
Berubah
- melewati
GZipMiddlewareketika responsnya mengandungContent-Encoding# 1901.
diperbaiki
- dari
TestClient# 1953 Hapus parameter kueri yang tidak diinginkanunquote()... - memastikan bahwa
MutableHeaders._listsebenarnya adalahlist# 1917. Kompatibilitas impor* dengan versiAnyIO# 1936 berikutnya.
0.21.0
26 September 2022
Rilis ini menggantikan sisi klien HTTP dasar yang digunakan pada TestClient(requests :arrow_right:httpx), yang dapat merusak rangkaian pengujian Anda karena API yang sedikit berbeda. Untuk membuat migrasi lebih lancar, Anda dapat menggunakan alat bump-testclient.
Ubah (atau: ubah)
- ada
TestClient# 1376, maurequestsGanti denganhttpx
ditambahkan
- Menambahkan
WebSocketExceptiondan dukungan untuk penangan pengecualian WebSocket # 1263. - Tambahkan parameter
middlewareke kelasMount# 1649. - Secara resmi mendukung Python 3.11 # 1863.
- Menerapkan
__repr__Untuk kelas rute # 1864 Ya.
Diperbaiki
- Memperbaiki bug di mana
BackgroundTasksdibatalkan saat menggunakanBaseHTTPMiddlewaredan klien memutuskan # 1715.
0.20.4
28 Juni 2022
Diperbaiki
- Hapus konverter dari jalur saat menghasilkan skema OpenAPI # 1648 Ya.
0.20.3
10 Juni 2022
Diperbaiki
- Kembalikan "Izinkan
StaticFilesUntuk mengikuti simlink " # 1681 Ya.
0.20.2
7 Juni 2022
diperbaiki
- Regresi tetap pada jalur rute dengan kolon # 1675.
- Izinkan
StaticFilesUntuk mengikuti simlink # 1337 Ya.
0.20.1
28 Mei 2022
diperbaiki
- Peningkatan deteksi callables async # 1444 Ya.
- Kirim 400 (Permintaan Buruk) ketika
boundaryhilang # 1617. - Kirim 400 (Permintaan Buruk) saat kehilangan kolom "nama" di
Content-DispositionKepala # 1643 Ya. - Jangan mengirim data kosong ke
StreamingResponsePadaBaseHTTPMiddleware# 1609 Ya. - Menambahkan
__bool__Dunder untukSecret# 1625 Ya.
0.20.0
3 Mei 2022
Dihapus
0.19.1
22 April 2022
diperbaiki
- Inferensi tetap dari
Route.nameKetika dibuat dari metode # 1553 Ya. - Hindari
TypeErrorpadawebsocket.disconnectketika kode adalahNone# 1574.
ketinggalan jaman
- Mengusir
WS_1004_NO_STATUS_RCVDdanWS_1005_ABNORMAL_CLOSUREMendukungWS_1005_NO_STATUS_RCVDdanWS_1006_ABNORMAL_CLOSURE, karena konstanta sebelumnya tidak cocok dengan Spesifikasi WebSockets # 1580 Ya.
0.19.0
9 Maret 2022
ditambahkan
- Penangan kesalahan akan selalu berjalan, bahkan jika kesalahan terjadi pada tugas latar belakang # 761 Ya.
- Menambahkan parameter
headerskeHTTPException# 1435. - Respons internal dengan kode status
405masukkan headerAllow, seperti yang dijelaskan oleh RFC 7231 # 1436. - ada
JSONResponsedalamcontentParameter sekarang diperlukan # 1431. - Tambahkan Pendaftaran Konverter URL Kustom # 1437.
- menambahkan parameter tipe pembuangan konten ke
FileResponse# 1266. - Di Wajib Dekorator # 920, tambahkan parameter kueri berikutnya bersama dengan URL permintaan asli.
- menambahkan
raw_pathke lingkupTestClient# 1445. - menambahkan operator serikat ke
MutableHeaders# 1240. - Tampilkan detail rute yang hilang di halaman debug # 1363.
- mengubah rentang versi yang diperlukan untuk
anyiomenjadi>=3.4.0,<5.0# 1421 dan # 1460. - menambahkan persyaratan
typing-extensions>=3.10- gunakan # 1475 hanya dalam versi yang lebih rendah dari Python 3.10.
diperbaiki
- mencegah
BaseHTTPMiddlewaremenyembunyikan kesalahan dalamStreamingResponsedan menginstal aplikasi # 1459. SessionMiddlewaremenggunakanpath=...eksplisit alih-alih ASGI "root _ path" # 1512 secara default.Request.clientSekarang sesuai dengan spesifikasi ASGI # 1462.- mempromosikan
KeyErrorsejak awal untuk batas yang hilang # 1349.
ketinggalan jaman
0.18.0
23 Januari 2022
Ditambahkan
- Ubah ukuran potongan default dari 4Kb menjadi 64Kb aktif
FileResponse# 1345 Ya. - Tambahkan dukungan untuk
functools.partialdalamWebSocketRoute# 1356 Ya. - Tambahkan paket
StaticFilesdengan direktori # 1350. - Biarkan pilihan di lingkungan
Jinja2Templates# 1401 Ya. - Izinkan metode HEAD pada
HttpEndpoint# 1346. - Terima header tambahan di
websocket.acceptPesan # 1361 dan # 1422 Ya. - Tambahkan
reasonkeWebSockettutup acara ASGI # 1417. - Tambahkan atribut header ke
UploadFile# 1382. - Jangan hilangkan header
Content-Lengthuntuk kasusContent-Length: 0# 1395. - Jangan mengatur header untuk tanggapan dengan kode status 1xx, 204, dan 304 # 1397 Ya.
SessionMiddleware.max_agesekarang menerimaNone, jadi cookie dapat bertahan selama sesi browser # 1387.
diperbaiki
- Tweak
hashlib.md5()Fungsi aktifFileResponseGenerasi ETag. ParameterusedforsecurityBendera diatur keFalse, jika bendera tersedia pada sistem. Ini memperbaiki kesalahan yang diangkat pada sistem dengan FIPS diaktifkan # 1366 dan # 1410 Ya. - Perbaiki tipe
path_paramspada metodeurl_path_for()yaitu mengubahstrmenjadiAny# 1341. Hostsekarang mengabaikanportpada perutean # 1322.
0.17.1
17 November 2021
diperbaiki
- Fix
IndexErrordalam otentikasirequiresketika argumen fungsi terbungkus didistribusikan antara*argsdan**kwargs# 1335.
0.17.0
4 November 2021
ditambahkan
Response.delete_cookiesekarang menerima parameter yang sama sepertiResponse.set_cookie# 1228.- Memperbarui konstruktor
Jinja2Templatesuntuk memungkinkanPathLike# 1292.
diperbaiki
- tetap BadSignature penanganan pengecualian di SessionMiddleware # 1264.
- Ubah tipe pengembalian
HTTPConnection.__getitem__daristrmenjadityping.Any# 1118. - Perubahan
ImmutableMultiDict.getlistJenis kembali darityping.List[str]Untuktyping.List[typing.Any]# 1235 Ya. - Menangani pengecualian
OSErrorpadaStaticFiles# 1220. - Memperbaiki
StaticFiles404.html dalam mode HTML # 1314. - Mencegah anyios. ExceptionGroup dalam tampilan kesalahan di bawah BaseHTTPMiddleware # 1262.
Dihapus
- Hapus GraphQL mendukung # 1198.
0.16.0
19 Juli 2021
ditambahkan
- Ditambahkan Pengkodean Opsi pendanaan # 1219
diperbaiki
Contoh* starlette.websockets.WebSocket sekarang dapat disesuaikan dan dibandingkan dengan identitas # 1039
* Sejumlah perbaikan yang berkaitan dengan kelompok tugas lari dalam umur # 1213,# 1227
Ditinggalkan / dihapus
- Metode
starlette.templates.Jinja2Templates.get_envtelah dihapus # 1218 - ClassVar
starlette.testclient.TestClient.async_backendtelah dihapus, backend sekarang dikonfigurasi menggunakan konstruktor kwargs # 1211 - Melewati Fungsi Generator Async atau Fungsi Generator ke
starlette.routing.Router(lifespan=)tidak digunakan lagi. Anda harus membungkus umur Anda dengan@contextlib.asynccontextmanager.# 1227 # 1110
0.15.0
23 Juni 2021
Rilis ini membuat perubahan besar pada bagian asinkron yang mendasari Starlette. Akibatnya, Starlette sekarang bergantung pada AnyIO, dan ada beberapa perubahan API kecil. Perubahan besar lainnya dalam rilis ini adalah penghinaan dukungan GraphQL bawaan.
ditambahkan
- Starlette sekarang mendukung Trio sebagai runtime asinkron melalui AnyIO - # 1157.
TestClient.websocket_connect()Sekarang harus digunakan sebagaimanajer konteks.- Dukungan awal untuk Python 3.10 - # 1201.
Tingkat kompresi yang digunakan oleh* dalam
GZipMiddlewaresekarang dapat disesuaikan - # 1128.
diperbaiki
Beberapa perbaikan ke CORSMiddleware oleh* . Lihat # 1111, # 1112, # 1113, # 1199.
* Pesan pengecualian yang ditingkatkan dalam kasus nama parameter jalur duplikat - # 1177.
* RedirectResponse sekarang menggunakan pengkodean quote daripada pengkodean quote_plus di header Location untuk lebih cocok dengan perilaku dalam kerangka kerja lain seperti Django - # 1164.
* Dalam lebih banyak kasus, penyebab pengecualian sekarang dipertahankan - # 1158.
* Dalam hal pemasangan aplikasi, cookie sesi sekarang menggunakan jalur akar ASGI - # 1147.
* Memperbaiki kesalahan pembatalan cache saat menghapus file statis dalam keadaan tertentu - # 1023.
* meningkatkan penggunaan memori BaseHTTPMiddleware saat menangani respons besar - tetap # 1012 oleh # 1157
Ditinggalkan / Dihapus
- Dukungan GraphQL bawaan melalui kelas
GraphQLApptelah dihapus dan akan dihapus di rilis mendatang. Silakan lihat # 619. GraphQL tidak didukung pada Python 3.10. - Parameter
executoruntukGraphQLApptelah dihapus. Gunakanexecutor_classsebagai gantinya. - Parameter
workersuntukWSGIMiddlewaretelah dihapus. Ini tidak berpengaruh apa pun sejak Starlette v0.6.3.
0.14.2
2 Februari 2021
Diperbaiki
- Kompatibilitas
ServerErrorMiddlewaretetap dengan Python 3.9.1/3.8.7 saat mode debug diaktifkan -# 1132. - Fixed unclosed socket
ResourceWarningsaat menggunakanTestClientdengan titik akhir WebSocket - # 1132. - Peningkatan deteksi
asyncEndpoint dibungkusfunctools.partialPada Python 3.8 + - # 1106 Ya.
0.14.1
9 November 2020
Dihapus
UJSONResponsetelah dihapus (perubahan ini dimaksudkan untuk dimasukkan dalam 0.14.0). Silakan lihat dokumentasi untuk cara mengimplementasikan tanggapan menggunakan serialisasi JSON kustom -# 1074.
0.14.0
8 November 2020
ditambahkan
- Starlette sekarang secara resmi mendukung Python 3.9.
- Di
StreamingResponse, memungkinkan iterator async kustom seperti objek dari kelas implementasi__aiter__Ya. - Diizinkan penggunaan
functools.partialPawang Async dalam versi Python 3.6 dan 3.7. - Ditambahkan 418 I 'm A Teapot kode status.
Berubah
- Buat tugas dari koroutin penangan sebelum mengirimkannya ke
asyncio.wait. - Gunakan
format_exceptionsebagai penggantiformat_tbdalam responsdebugServerErrorMiddleware. - Jadilah lebih lunak dengan argumen pawang saat menggunakan dekorator
requires.
0.13.8
-
Revert
Queue(maxsize=1)fix untuk kelas middlewareBaseHTTPMiddlewaredan respon streaming. -
Konstruktor
StaticFilessekarang memungkinkanpathlib.Pathselain string untuk argumendirectory-nya.
0.13.7
- Memperbaiki penggunaan memori tinggi saat menggunakan
BaseHTTPMiddlewareKelas Middleware dan tanggapan streaming.
0.13.6
- memperbaiki kesalahan 404 dengan
StaticFiles.
0.13.5
- menambahkan dukungan untuk fitur
Starlette(lifespan=...). - Pengecekan traversal jalur yang lebih kuat di aplikasi StaticFiles.
- Perbaiki pengkodean WSGI PATH _ INFO.
- RedirectResponse sekarang menerima parameter latar belakang opsional
- Biarkan rute jalur berisi metakarakter ekspresi reguler
- Perlakukan "tubuh" HTTP ASGI sebagai kunci opsional.
- Jangan gunakan thread pool untuk menulis untuk mengunggah file dalam memori.
0.13.0
- Beralih untuk memfasilitasi konfigurasi aplikasi dalam gaya inisialisasi. Ini berarti meninggalkan gaya dekorator demi tabel perutean deklaratif dan definisi middleware.
0.12.12
- memperbaiki masalah
request.url_for()untuk kasus "pemasangan bersarang."
0.12.11
- Perbaiki
request.url_for()saat menggunakan ASGIroot_path.
0.12.1
- menambahkan
URL.include_query_params(**kwargs) - menambahkan
URL.replace_query_params(**kwargs) - menambahkan
URL.remove_query_params(param_names) request.stateBertahan dengan benar di middleware.- menambahkan antarmuka
request.scope.
0.12.0
- Beralih ke ASGI 3.0.
- Memperbaiki middleware CORS.
- Menambahkan dukungan
StaticFiles(html=True). - Rute tetap mengutip dalam tanggapan redirect.
0.11.1
- Menambahkan antarmuka
request.stateuntuk menyimpan informasi tambahan yang sewenang-wenang. - Mendukung menonaktifkan GraphiQL dengan
GraphQLApp(..., graphiql=False).
0.11.0
DatabaseMiddlewareSekarang dijatuhkan untukdatabases- Template tidak lagi dikonfigurasi pada contoh aplikasi. Menggunakan
templates = Jinja2Templates(directory=...)danreturn templates.TemplateResponse('index.html', {"request": request}) - Pembuatan skema tidak lagi melekat pada instance aplikasi. Menggunakan
schemas = SchemaGenerator(...)danreturn schemas.OpenAPIResponse(request=request) LifespanMiddlewareDijatuhkan demi penanganan umur berbasis router.- Contoh aplikasi sekarang menerima
routesArgumen,Starlette(routes=[...]) - Generasi skema sekarang termasuk rute yang dipasang.
0.10.6
- Menambahkan komponen perutean
Lifespan.
0.10.5
- Pastikan
templatingtidak secara ketat memerlukanjinja2untuk dipasang.
0.10.4
Template* sekarang dikonfigurasi secara independen dari contoh aplikasi.templates = Jinja2Templates(directory=...). API yang ada tetap di tempatnya, tetapi tidak lagi didokumentasikan, dan akan ditinggalkan pada waktunya.
Lihat dokumentasi template untuk lebih jelasnya.
0.10.3
- Pindah ke paket
databasesindependen, bukanDatabaseMiddleware. API yang Ada tetap di tempatnya, tetapi tidak lagi didokumentasikan, dan akan ditinggalkan pada waktunya.
0.10.2
- Jangan menjatuhkan nomor port eksplisit pada pengalihan dari
HTTPSRedirectMiddlewareYa.
0.10.1
- Tambahkan dukungan database MySQL.
- Tambahkan perutean berbasis host.
0.10.0
- WebSockets sekarang mengirim / menerima JSON melalui bingkai data teks secara default. Pembingkaian biner menggunakan
.send_json(data, mode="binary")dan.receive_json(mode="binary"). GraphQLAppsekarang menerima parameterexecutor_class, yang harus digunakan dalam preferensi untuk parameterexecutoryang ada. Mengatasi masalah instantiating aktuator asynchronous sebelum loop peristiwa diatur. Harapkan parameterexecutorakan dihapus dalam rilis medium atau besar berikutnya. Otentikasi* dan dekorator@requiressekarang mendukung titik akhir WebSocket.MultiDictdanImmutableMultiDictKelas masukuvicorn.datastructuresTersedia di.QueryParamssekarang diinstansiasi menggunakan parameter*args, **kwargsgaya kamus standar.
0.9.11
- Cookie sesi sekarang termasuk "kedaluwarsa" browser di samping waktu kedaluwarsa yang ditandatangani yang ada.
request.form()Sekarang kembalikan antarmuka multi-kamus.- Ketika beberapa item kunci identik muncul, parameter kueri implementasi multi-kamus sekarang
.keys(),.values()dan.items()Perilaku yang mencerminkan lebih akuratdict... - Gunakan selama proses
urlsplitAlih-alihurlparse...
0.9.10
- Dukungan untuk metode kelas
@requires(...)... - Terapkan URL melarikan diri untuk membentuk data.
- secara otomatis mendukung permintaan
HEAD. - menambahkan
await request.is_disconnected(). - Berikan nama operasiNama kepada pelaksana GraphQL.
0.9.9
- menambahkan
TemplateResponse. - Tambahkan tipe data
CommaSeparatedStrings. - Menambahkan
BackgroundTasksuntuk beberapa tugas. - Subkelas umum untuk
RequestdanWebSocket, untuk mis.sharesessionFungsionalitas. - Mengekspos alamat jarak jauh dengan
request.client.
0.9.8
- Tambahkan
request.database.executemany.
0.9.7
- Pastikan bahwa
AuthenticationMiddlewaremenangani pesan masa pakai dengan benar.
0.9.6
- Menambahkan
AuthenticationMiddleware, dan dekorator@requires().
0.9.5
- Dukung baik
strAtauSecretuntukSessionMiddleware(secret_key=...)Ya.
0.9.4
- Menambahkan
config.environYa. - Menambahkan
datastructures.SecretYa. - Tambahkan
datastructures.DatabaseURL.
0.9.3
- Menambahkan
config.Config(".env")
0.9.2
- Menambahkan dukungan database opsional.
- Menambahkan
requestUntuk konteks GraphQL. - Sembunyikan komponen kata sandi apa pun dalam
URL.__repr__.
0.9.1
- Tangani kesalahan startup / shutdown dengan benar.
0.9.0
TestClientSekarang dapat digunakan sebagaimanajer konteks, bukanLifespanContextYa.- Lifespan sekarang ditangani sebagai middleware. Acara startup dan Shutdown terlihat di seluruh tumpukan middleware.
0.8.8
- Dukungan yang lebih baik untuk generator skema API pihak ketiga.
0.8.7
- Mendukung permintaan chunked dengan TestClient.
- Membersihkan tugas asyncio dengan benar dengan WSGIMiddleware. Dukungan* menggunakan TestClient dalam titik akhir, untuk ejekan layanan.
0.8.6
- Cookie sesi sekarang diatur di jalur akar.
0.8.5
- Dukungan untuk pengubah URL.
- mendukung tanggapan cache HTTP 304 dari
StaticFiles. - Selesaikan masalah pelarian karakter dalam bentuk data.
0.8.4
- Tubuh default kosong sebagai respons.
0.8.3
- menambahkan parameter "nama" ke
@app.route(). - Rekonstruksi URL menggunakan header "Host."
0.8.2
file statis
- StaticFiles tidak lagi membaca file sebagai tanggapan atas permintaan
HEAD.
0.8.1
Template
- Tambahkan konfigurasi template default menggunakan Jinja2.
Berikut ini diperbolehkan:
Aplikasi = Starlette (template _ directory = "template")
@ app.route ('/')
Sinkronisasi beranda def (permintaan):
#`url_for` tersedia di dalam template.
Template = get _ template ('index.html')
Konten = template.render (permintaan = permintaan)
Mengembalikan Respon HTMLResponse (konten)
0.8.0
pengecualian
- menambahkan dukungan untuk
@app.exception_handler(404). - Pastikan pengecualian yang ditangani tidak diperlakukan sebagai kesalahan oleh tumpukan middleware.
percakapan middleware
- Menambahkan
max_age, dan menggunakan cookie yang ditandatangani dengan stempel waktu. Default menjadi dua minggu.
Kue
- Pastikan cookie benar-benar HTTP yang benar.
File Statistik
- Direktori cek ada pada instansiasi.
0.7.4
Konkurensi
- Menambahkan
starlette.concurrency.run_in_threadpool. Sekarang menangani dukungancontextvar.
0.7.3
Rute
- Menambahkan dukungan
name=keapp.mount(). Ini memungkinkan misalnya:app.mount('/static', StaticFiles(directory='static'), name='static').
0.7.2
peralatan tengah
- Menambahkan dukungan untuk dekorator
@app.middleware("http").
Rute
- Tambahkan "titik akhir" ke lingkup ASGI.
0.7.1
Pelacakan debug
- Peningkatan debugging traceback informasi & styling.
perutean URL
- Mendukung pencarian URL yang dipasang dengan "path =," eg.
url_for('static', path=...). - Mendukung pencarian URL bersarang, mis.
url_for('admin:user', username=...). - Menambahkan dukungan tebasan pengalihan.
- Menambahkan dukungan redirect www.
Tugas latar belakang
- Menambahkan dukungan tugas latar belakang ke
FileResponsedanStreamingResponse.
0.7.0
Dukungan Skema API
- Tambahkan
app.schema_generator = SchemaGenerator(...). - Menambahkan properti
app.schema. - Tambahkan
OpenAPIResponse(...).
Perutean grafis
- Jatuhkan
app.add_graphql_route("/", ...)Mendukung lebih konsistenapp.add_route("/", GraphQLApp(...))Ya.
0.6.3
Rute API
- Mendukung perutean ke metode.
- Pastikan
url_path_forbekerja dengan Gunung ('/{some_path_params}'). - Argumen Router Fixed (default =).
- Mendukung jalur yang berulang, seperti:
@app.route("/", methods=["GET"]),@app.route("/", methods=["POST"]) - Gunakan ThreadPoolExecutor default untuk semua titik akhir sinkronisasi.
0.6.2
SessionMiddleware
Ditambahkan pasangan request.session Dukungan, dan SessionMiddleware ...
0.6.1
Perangkat tengah BaseHTTP
Dukungan tambahan untuk BaseHTTPMiddleware, yang menyediakan antarmuka permintaan / respons standar melalui middleware ASGI biasa.
Ini berarti Anda dapat menulis middleware ASGI saat masih bekerja pada tingkat permintaan / respons, daripada memproses pesan ASGI secara langsung.
Starlette.application diimpor dari Starlette
Dari starlette.middleware.base impor BaseHTTPMiddleware
Peralatan Bea Cukai Kelas (BaseHTTPMiddleware):
Aync def pengiriman (sendiri, permintaan, panggilan _ berikutnya):
Tanggapan = tunggu panggil _ next (permintaan)
Tanggap.header ['Custom-Header'] = 'Exampleled'
Respon kembali
Aplikasi = Starlette ()
App.add _ middleware (CustomMiddleware)
0.6.0
Minta jalur _ params
Perubahan terbesar pada 0,6 adalah tanda tangan titik akhir tidak lagi:
Async def func (permintaan: Permintaan, * * kwargs) - > Tanggapan
Sebagai gantinya, kami hanya menggunakan:
Async def func (permintaan: Permintaan) - > Tanggapan
Parameter jalur tersedia dalam bentuk request.path_params dalam permintaan.
Ini tidak seperti kebanyakan kerangka kerja web Python, tetapi saya pikir pada akhirnya akan lebih konsisten selama proses berlangsung.
Permintaan. url _ untuk ()
Permintaan dan WebSocketSession sekarang mendukung inversi URL menggunakan request.url_for(name, **path_params). Metode ini mengembalikan contoh URL yang sepenuhnya memenuhi syarat. Instansi URL adalah objek seperti string.
app.url _ path _ for () (Ungkapan bahasa Inggris ini mungkin merupakan fungsi atau nama metode tertentu di bidang teknis. Dalam konteks Cina, ekspresi bahasa Inggris dari teks asli terkadang dipertahankan untuk memastikan akurasi dan profesionalisme. Oleh karena itu, terjemahan di sini secara langsung mempertahankan bentuk bahasa Inggris dari teks asli)
Aplikasi sekarang mendukung inversi jalur URL menggunakan app.url_path_for(name, **path_params). Metode ini mengembalikan contoh URL dengan jalur dan skema yang ditetapkan. Contoh URL adalah objek seperti string yang, jika dipaksa menjadi string, hanya mengembalikan jalur.
Pelaksana. rute
Aplikasi sekarang mendukung parameter .routes yang mengembalikan daftar [Route|WebSocketRoute|Mount] es.
Rute, perutean WebSocket, mount
Komponen tingkat rendah untuk Router sekarang cocok dengan tanda tangan @app.route(),@app.websocket_route(), dan app.mount().