API-Schemas
Starlette unterstützt generative API-Muster wie die weit verbreitete OpenAPI-Spezifikation (früher "Swagger" genannt).
Die Mustergenerierung funktioniert, indem Routen in der Anwendung über app.routes überprüft und Dokumentzeichenfolgen oder andere Eigenschaften auf dem Endpunkt verwendet werden, um das vollständige API-Muster zu bestimmen.
Starlette ist nicht an ein bestimmtes Mustergenerierungs-oder Validierungswerkzeug gebunden, sondern enthält eine einfache Implementierung, die OpenAPI-Muster basierend auf Dokumentzeichenfolgen generiert.
von starlette. applications import Starlette
von starlette. routing import Route
von starlette. schemas import SchemaGenerator
Schemas = Schemas (Aussprache)
{„ openapi ": „ 3.0.0", „ info ":{"title": "Example API", "version": "1.0"}}
)
def list_users (Anfrage):
"""
Die Antworten:
200:
Beschreibung: Eine Liste von Benutzern.
Beispiel:
[{"username": "tom"}, {"username": "lucy"}]
"""
NotImplementedError (NotImplementierungsfehler)
def create_user (Anforderung):
"""
Die Antworten:
200:
Beschreibung: Ein User.
Beispiele:
{"username": "tom"}
"""
NotImplementierungsfehler ()
def openapi_schema (Anfrage):
return schemas. OpenAPIResponse (request = Anforderung)
Die Bahn […]
Route ("/users", endpoint = list_users, methods =["GET"]), und
Route ("/users", endpoint = create_user, methods =["POST"]), und
Route ("/schema", endpoint = openapi_schema, include_in_schema = False)("/Schema", endpoint ="openapi_schema", include_in_schema ="False")
]
Starlette (Routen = Routen) Bearbeiten
Wir können jetzt auf das OpenAPI-Muster im Endpunkt "/schema " zugreifen .
Sie können das API-Schema direkt mit .get_schema(routes) generieren :
Schema = schemas . get _ schema (routes = app . routes) Bearbeiten
assert schema = = {
„ OpenAPI " : „ 3.0.0 " und
für " info " :{"title": "Example API", "version": "1.0"},
Die „ PATHS " :
Benutzer : {
„ Geht " :)
„ Antworten " : {
200: {
" description " : " Eine Liste von Benutzern . " ,
Beispiel : [{"username": "tom"},{"username": "lucy"}] ,
}
}
},
Der „ Post " : [
„ Antworten " :)
200 : {" description " : " A user . " , " Beispiele " :{"username": "tom"}}
}
},
},
},
}
Möglicherweise möchten Sie auch API-Muster drucken können , damit Sie Tools wie das Erstellen von API-Dokumenten verwenden können .
if _ _ name _ _ = = ' _ main _ _ ' aus :
assert sys . argv [ -1 ] in (" run " , " schema ") , " Verwendung :example.py[ Lauf ]|[ Bearbeiten ]
if sys . argv [ -1 ] = " run " (" ausführen ") :
uvicorn.run(" Beispiel : app " , host ='0.0.0', Port = 8000)
elif sys . argv [ -1 ] = " Schema " (siehe auch " Schema ") :
Schema = schemas . get _ schema (routes = app . routes) Bearbeiten
print (yaml . dump (schema , default _ flow _ style = False)) (Beispiel)
Pakete von Dritten
Kleine API - Regeln
Starlette lässt sich einfach in APISpec integrieren, das eine Reihe von Bibliotheken zur Objektserialisierung unterstützt.