API-schema's
Starlette ondersteunt generatieve API-patronen, zoals de veel gebruikte OpenAPI-specificatie. (Voorheen bekend als "Swagger".)
Schema-generatie werkt door de routes op de applicatie via app.routes te onderzoeken en documentstrings of andere eigenschappen op het eindpunt te gebruiken om het volledige API-schema te bepalen.
Starlette is niet gebonden aan een bepaalde tool voor het genereren of valideren van schema 's, maar bevat een eenvoudige implementatie die OpenAPI-schema 's genereert op basis van de documentreeks.
Starlette.applicaties importeren vanuit Starlette
Van starlette. routing importeren Route
Vanaf starlette.schemas importeren SchemaGenerator
Schema 's = SchemaGenerator (
{"OpenAPI": "3.0.0", "info":{"title": "Example API", "version": "1.0"}}
)
Def list _ users (verzoek):
"""
Reacties:
200:
Beschrijving: Een lijst van gebruikers.
Voorbeelden:
[{"username": "tom"}, {"username": "lucy"}]
"""
NotImplementedError () aanmaken
Def create _ user (verzoek):
"""
Reacties:
200:
Beschrijving: Een gebruiker.
Voorbeelden:
{"username": "tom"}
"""
NotImplementedError () aanmaken
Def openapi _ schema (verzoek):
Retourschema 's. OpenAPIResponse (aanvraag = aanvraag)
Routes = [
Route ("/ users", eindpunt = list _ users, methoden = ["GET"]),
Route ("/ users", eindpunt = create _ user, methoden = ["POST"]),
Route ("/ schema", endpoint = openapi _ schema, inclusief _ in _ schema = False)
]
App = Starlette (routes = routes)
We hebben nu toegang tot het OpenAPI-schema op het "/ schema" -eindpunt.
U kunt .get_schema(routes) gebruiken om direct API-schema 's te genereren:
Schema = schemas.get _ schema (routes = app.routes)
Schema bevestigen = = {
"Openapi": "3.0.0",
"Informatie":{"title": "Example API", "version": "1.0"},
"Paden": {
"/ gebruikers": {
"Krijgen": {
"Reacties": {
200: {
"Beschrijving": "Een lijst van gebruikers".,
"Voorbeelden": [{"username": "tom"},{"username": "lucy"}],
}
}
},
"plaatsen": {
"Reacties": {
200: {"description": "Een gebruiker"., "voorbeelden":{"username": "tom"}}
}
},
},
},
}
Mogelijk wilt u ook het API-schema kunnen afdrukken, zodat u tools kunt gebruiken zoals het genereren van API-documentatie.
Als _ _ naam _ _ = = '_ _ hoofd _ _':
Stel sys.argv [-1] in ("uitvoeren", "schema"), "Gebruik: example.py [uitvoeren | schema]"
Als sys.argv [-1] = = "uitvoeren":
uvicorn.run ("voorbeeld: app", host = '0.0.0.0', port = 8000)
Elif sys.argv [-1] = = "schema":
Schema = schemas.get _ schema (routes = app.routes)
Afdrukken (yaml.dump (schema, default _ flow _ style = False))
softwarepakketten van derden
Starbodies - API Specificatie
Starlette is eenvoudig te integreren met APISpec en ondersteunt verschillende objectserialisatiebibliotheken.