Skema API
Starlette mendukung pola API generatif, seperti spesifikasi OpenAPI yang banyak digunakan. (Sebelumnya dikenal sebagai "Swagger.")
Generasi pola bekerja dengan app.routes Periksa rute pada aplikasi dan gunakan string dokumen atau properti lain pada titik akhir untuk menentukan skema API lengkap.
Starlette tidak terikat pada pembuatan skema atau alat validasi tertentu, tetapi mencakup implementasi sederhana yang menghasilkan skema OpenAPI berdasarkan string dokumen.
Starlette.application diimpor dari Starlette
Dari starlette. rute impor routing
Dari SchemaGenerator impor starlette.schemas
Skema = SchemaGenerator (
{"OpenAPI": "3.0.0," "info":{"title": "Example API", "version": "1.0"}}
)
Daftar default _ pengguna (permintaan):
"""
Tanggapan:
200:
Deskripsi: Daftar pengguna.
Contoh:
[{"username": "tom"}, {"username": "lucy"}]
"""
Meningkatkan NotImplementedError ()
Def membuat _ pengguna (permintaan):
"""
Tanggapan:
200:
Deskripsi: Seorang pengguna.
Contoh:
{"username": "tom"}
"""
Meningkatkan NotImplementedError ()
Def openapi _ skema (permintaan):
Skema pengembalian. OpenAPIResponse (permintaan = permintaan)
Rute = [
Rute ("/ pengguna," endpoint = list _ user, metode = ["GET"]),
Rute ("/ pengguna," endpoint = buat _ user, metode = ["POST"]),
Rute ("/ skema," endpoint = openapi _ schema, termasuk _ in _ schema = Salah)
]
Aplikasi = Starlette (rute = rute)
Kita sekarang dapat mengakses skema OpenAPI di titik akhir "/ skema."
Anda dapat menggunakan .get_schema(routes) untuk menghasilkan skema API secara langsung:
Skema = skema. get _ schema (route = app.route)
Skema penetapan = = {
"Openapi": "3.0.0,"
"Info":{"title": "Example API", "version": "1.0"},
"Jalan": {
"/ pengguna": {
"Mendapatkan": {
"Tanggapan": {
200: {
"Deskripsi": "Daftar pengguna.,"
"Contoh": [{"username": "tom"},{"username": "lucy"}],
}
}
},
"Posting": {
"Tanggapan": {
200: {"deskripsi": "Seorang pengguna.," "contoh":{"username": "tom"}}
}
},
},
},
}
Anda mungkin juga ingin dapat mencetak skema API sehingga Anda dapat menggunakan alat seperti menghasilkan dokumentasi API.
Jika _ _ name _ _ = = '_ _ main _ _':
Menegaskan sys.argv [-1] dalam ("menjalankan," "skema"), "Penggunaan: example.py [menjalankan | skema]"
Jika sys.argv 1-1] = = "lari":
uvicorn.run ("contoh: aplikasi," host = '0.0.0.0', port = 8000)
Elif sys.argv 1-1] = = "skema":
Skema = skema. get _ schema (route = app.route)
Cetak (yaml.dump (skema, default _ flow _ style = Salah))
paket perangkat lunak pihak ketiga
Bintang - Spesifikasi API
Starlette mudah diintegrasikan dengan APISPEC dan mendukung beberapa pustaka serialisasi objek.