Схемы API
Starlette поддерживает генерирование режимов API, таких как широко используемые спецификации OpenAPI.(Ранее это было «Swagger»)
Генерация шаблонов работает через app.routes, проверяя маршруты в приложении и используя строку документа или другие свойства на конечной точке, чтобы определить полный режим API.
Starlette не связан с какими-либо конкретными инструментами генерации или проверки шаблонов, но содержит простую реализацию, которая генерирует шаблоны OpenAPI на основе строк документа.
Из Starlette.applications Import Starlette
От Starlet.routing Import Route
Из Starlette.Schemas Import SchemaGenerator
Смартфон ((
{"openapi": "3.0.0", "info":{"title": "Example API", "version": "1.0"}}
)
def list_users (request):
"""
Ответственные:
200:
Описание: A list of users.
examples:
[{"username": "tom"}, {"username": "lucy"}]
"""
Rise NotImplementedError()
create def_user (request):
"""
Ответственные:
200:
Описание: Пользователь.
examples:
{"username": "tom"}
"""
Rise NotImplementedError()
def openapi_schema (request):
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)
Теперь мы можем получить доступ к режиму OpenAPI в конечной точке '/schema'.
Вы можете использовать .get_schema(routes) для создания режимов API напрямую:
schema = schemas.get_schema (routes= app.routes)
assert schema = {
"openapi": "3.0.0"
"info":{"title": "Example API", "version": "1.0"},
«Paths»: {
"/users":
«get»: {
"Ответственные": {
200: {
"description": "A list of users".
"examples": [{"username": "tom"},{"username": "lucy"}]
}
}
},
"post": {
"Ответственные": {
200: {"description": "A user.", "examples":{"username": "tom"}}
}
},
},
},
}
Возможно, вам также понадобится возможность распечатать режим API, чтобы вы могли использовать такие инструменты, как создание документации API.
if__name__= '_main__':
assert sy.argv [-1] in ("run", "schema"), "Usage: example.py [run]|«Шабло»
if sy.argv [-1] = "run":
uvicorn.run ("example:app", host ='0.0.0.0', port=8000)
elif sy.argv [-1] = "schema":
schema = schemas.get_schema (routes= app.routes)
print(yaml.dump (schema, default_flow_style =False))
Пакеты сторонних производителей
Звездные животные- API спецификации
Starlette легко интегрируется с APISpec, который поддерживает некоторые библиотеки сериализации объектов.