Respons
Starlette berisi kelas respons untuk mengirim pesan ASGI yang sesuai melalui saluran send.
tanggapan
Tanda tangan: Response(content, status_code=200, headers=None, media_type=None)
content- Sebuah string atau string byte.status_codeKode status HTTP bilangan bulat.headers- kamus string.media_type- String yang memberikan jenis media. Misalnya: "text / html"
Starlette akan secara otomatis menyertakan header Content-Length. Ini juga akan menyertakan header Content-Type tergantung pada media _ ketik dan tambahkan set karakter untuk jenis teks, kecuali set karakter sudah ditentukan dalam media_type.
Setelah Anda menetapkan tanggapan, Anda dapat mengirimkannya dengan menyebutnya sebagai contoh aplikasi ASGI.
Tanggapan dari starlette. impor
Async aplikasi def (lingkup, menerima, mengirim):
Tegaskan lingkup ['tipe'] = = 'http'
Tanggapan = Tanggapan ('Halo, dunia!', media _ type = 'text / plain')
Menunggu tanggapan (lingkup, menerima, mengirim)
Mengatur cookie
Starlette menyediakan metode set_cookie yang memungkinkan Anda mengatur cookie pada objek respons.
Tanda tangan: Response.set_cookie(key, value, max_age=None, expires=None, path="/", domain=None, secure=False, httponly=False, samesite="lax")
keyTali yang akan digunakan sebagai kunci kue.valueString yang akan digunakan sebagai nilai cookie.max_age- Sebuah bilangan bulat yang mendefinisikan masa pakai cookie dalam hitungan detik. Sebuah bilangan bulat atau nilai negatif adalah0Cookies akan segera dibuang.Optionalexpires- Baik bilangan bulat yang mendefinisikan jumlah detik sebelum cookie berakhir, atau tanggal dan waktu.OptionalpathString yang menentukan subset rute yang akan diterapkan cookie.Optionaldomain- String yang menentukan bidang di mana cookie valid.OptionalsecureNilai boolean yang menunjukkan bahwa cookie hanya akan di kirim ke server saat permintaan dibuat menggunakan protokol SSL dan HTTPS.Optionalhttponly- Nilai boolean yang menunjukkan bahwa cookie tidak dapat diakses melalui JavaScript melalui propertiDocument.cookie,XMLHttpRequest, atauRequestAPI.Optionalsamesite- string yang menentukan sama Kebijakan Situs untuk cookie. Nilai valid adalah'lax','strict', dan'none'. Default adalah'lax'.Optional
Hapus cookie
Sebaliknya, Starlette juga menyediakan metode delete_cookie untuk menghapus cookie set secara manual.
Tanda tangan: Response.delete_cookie(key, path='/', domain=None)
tanggapan HTML
Terima beberapa teks atau byte dan kembalikan respons HTML.
Dari pemula. Tanggapan impor HTMLResponse
Async aplikasi def (lingkup, menerima, mengirim):
Tegaskan lingkup ['tipe'] = = 'http'
Tanggapan = Respons HTML ('<html><body><h1>Halo, dunia!</h1></body></html>')
Menunggu tanggapan (lingkup, menerima, mengirim)
respons teks biasa
Menerima beberapa teks atau byte dan mengembalikan respons teks biasa.
Dari pemula. Tanggapan impor PlainTextResponse
Async aplikasi def (lingkup, menerima, mengirim):
Tegaskan lingkup ['tipe'] = = 'http'
Tanggapan = PlainTextResponse ('Halo, dunia!')
Menunggu tanggapan (lingkup, menerima, mengirim)
Respon JSON
Dapatkan beberapa data dan kembalikan respons yang dikodekan application/json.
Dari pemula. Tanggapan impor JSONResponse
Async aplikasi def (lingkup, menerima, mengirim):
Tegaskan lingkup ['tipe'] = = 'http'
Tanggapan = JSONResponse ({'hello': 'world'})
Menunggu tanggapan (lingkup, menerima, mengirim)
Serialisasi JSON Kustom
Jika Anda membutuhkan kontrol butiran halus atas serialisasi JSON, Anda dapat subclass JSONResponse dan mengesampingkan metode render.
Misalnya, jika Anda ingin menggunakan perpustakaan JSON pihak ketiga, seperti orjson:
Impor apa pun dari pengetikan
impor orjson
Dari pemula. Tanggapan impor JSONResponse
Respons Orjsonik Kelas (JSONResponse):
Def render (sendiri, konten: Apa saja) - > byte:
Mengembalikan orjson.dumps (konten)
Secara umum, kecuali jika Anda ingin mengoptimalkan titik akhir tertentu secara mikro atau perlu membuat serial jenis objek non-standar, Anda mungkin ingin tetap menggunakan JSONResponse secara default.
Respon ulang
Mengembalikan pengalihan HTTP. 307 kode status digunakan secara default.
Dari pemula. Tanggapan impor PlainTextResponse, RedirectResponse
Async aplikasi def (lingkup, menerima, mengirim):
Tegaskan lingkup ['tipe'] = = 'http'
Jika lingkup ['path']! = '/':
Respon = RedirectResponse (url = '/')
Lainnya:
Tanggapan = PlainTextResponse ('Halo, dunia!')
Menunggu tanggapan (lingkup, menerima, mengirim)
respons streaming
Ambil generator asinkron atau generator / iterator normal dan alirkan badan respons.
StreamingResponse diimpor dari starlette.responses
asyncio impor
Async def slow _ number (minimal, maksimal):
Menghasilkan '<html><body><ul>s'
Untuk angka dalam jangkauan (minimum, maksimum + 1):
Hasil '<li>% d</li>'% number
Menunggu asyncio.tidur (0,5)
Menghasilkan '</ul></body></html>'
Async aplikasi def (lingkup, menerima, mengirim):
Tegaskan lingkup ['tipe'] = = 'http'
Generator = lambat _ angka (1, 10)
Respon = StreamingResponse (generator, media _ type = 'text / html')
Menunggu tanggapan (lingkup, menerima, mengirim)
Harap dicatat bahwa objek file kelas (seperti yang dibuat oleh open()) adalah iterator normal. Oleh karena itu, Anda dapat mengembalikannya langsung di StreamingResponse.
respon file
Streaming file sebagai respons secara asinkron.
Instantiation membutuhkan serangkaian parameter yang berbeda dari jenis respons lainnya:
pathJalur file file yang akan dialirkan.headers- Setiap header khusus untuk dimasukkan sebagai kamus.media_type- Sebuah string memberikan jenis media. Jika tidak ditetapkan, nama file atau path akan digunakan untuk menyimpulkan jenis media.filename- Jika ditetapkan, itu akan dimasukkan dalam responsContent-Disposition.content_disposition_type- akan dimasukkan dalamContent-Dispositionrespons. Dapat diatur ke "lampiran" (default) atau "koneksi internal."
Respon file akan berisi header Content-Length,Last-Modified, dan ETag yang sesuai.
FileResponse diimpor dari starlette.responses
Async aplikasi def (lingkup, menerima, mengirim):
Tegaskan lingkup ['tipe'] = = 'http'
Tanggapan = FileResponse ('statistik / favicon.ico')
Menunggu tanggapan (lingkup, menerima, mengirim)
tanggapan pihak ketiga
tanggapan sumber insiden
Kelas respons yang mengimplementasikan acara yang di kirim server. Ini memungkinkan streaming acara dari server ke klien tanpa kompleksitas WebSockets.
Baize.asgi. fileResponse
Sebagai alternatif yang mulus untuk Starlette FileResponse, secara otomatis akan menangani metode Head dan permintaan Range.