Schémas d'API
Starlette prend en charge les modèles d'API génératifs, tels que la spécification OpenAPI largement utilisée.(anciennement "Swagger")
La génération de schéma fonctionne en vérifiant les itinéraires sur l'application via app.routes et en utilisant les chaînes de documents ou d'autres propriétés sur les points de terminaison pour déterminer le schéma complet de l'API.
Starlette n'est lié à aucun outil spécifique de génération ou de validation de schémas, mais contient une implémentation simple qui génère des schémas OpenAPI basés sur des chaînes de documents.
de starlette.applications import Starlette
de starlette.routing Route d'importation
de starlette. schemasimport SchemaGenerator
schemas = SchemaGenerator(
{"openapi": "3.0.0", "info":{"title": "Example API", "version": "1.0"}}
)
def list_users(demande):
"""
Réponses à:
200:
Description: Une liste d'utilisateurs.
Exemples:
[{"username": "tom"}, {"username": "lucy"}]
"""
raise NotImplementedError()
def create_user(demande):
"""
Réponses à:
200:
Description: Un utilisateur.
Exemples:
{"username": "tom"}
"""
raise NotImplementedError()
def openapi_schema(demande):
return schemas.OpenAPIResponse(request=request)
Routes = [
Route("/users", endpoint=list_users, methods=["GET"]),
Route("/users", endpoint=create_user, methods=["POST"]),
Route("/schema", endpoint=openapi_schema, include_in_schema=False)
]
app = Starlette(routes=routes)
Nous pouvons maintenant accéder au mode OpenAPI sur le point de terminaison «/schema ».
Vous pouvez utiliser .get_schema(routes) pour générer directement des schémas API:
schema = schemas.get_schema(routes= application.routes)
assert schema == {
"openapi": "3.0.0",
"info":{"title": "Example API", "version": "1.0"},
"paths": {
"/utilisateurs": {
« Get »: {
"Réponses": {
200: {
"Description": "Une liste d'utilisateurs",
« exemples »: [{"username": "tom"},{"username": "lucy"}],
}
}
},
"Post": {
"Réponses": {
200: {"description": "Un utilisateur.", "exemples":{"username": "tom"}}
}
},
},
},
}
Vous voudrez peut-être également pouvoir imprimer des schémas d'API afin de pouvoir utiliser des outils tels que la génération de documents API.
if __name__== '__main__':
assert sys.argv[-1] in ("run", "schema"), "Usage: example.py [run]| schéma]»
if sys.argv[-1] == "run":
uvicorn.run ("example:app", host ='0.0.0.0', port=8000)
elif sys.argv[-1] == "schema":
schema = schemas.get_schema(routes= application.routes)
print(yaml.dump(schema, default_flow_style=False))
Packages tiers
Starosome-Spécification API
Starlette est facile à intégrer avec APISpec et prend en charge certaines bibliothèques de sérialisation d'objets.