为Starlette提供APISpec支持
项目描述
为Starlette提供易于集成的APISpec
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from starlette.applications import Starlette
from starlette_apispec import APISpecSchemaGenerator
app = Starlette()
schemas = APISpecSchemaGenerator(
APISpec(
title="Example API",
version="1.0",
openapi_version="3.0.0",
info={"description": "explanation of the api purpose"},
plugins=[MarshmallowPlugin()],
)
)
@app.route("/schema", methods=["GET"], include_in_schema=False)
def schema(request):
return schemas.OpenAPIResponse(request=request)
安装
pip install -U starlette-apispec
或者你可以这样做
poetry add starlette-apispec
关于
这个库帮助你轻松地文档化使用Starlette构建的REST API。
Starlette是一个轻量级的ASGI框架/工具包,非常适合构建高性能的异步服务。
APISpec支持OpenApi规范,并提供了一些有用的插件,如marshmallow支持。
支持的版本: ^1.0.0
用法
此示例包括marshmallow集成
from apispec import APISpec
from starlette.applications import Starlette
from starlette.endpoints import HTTPEndpoint
from starlette.testclient import TestClient
from starlette_apispec import APISpecSchemaGenerator
app = Starlette()
schemas = APISpecSchemaGenerator(
APISpec(
title="Example API",
version="1.0",
openapi_version="3.0.0",
info={"description": "explanation of the api purpose"},
)
)
@app.websocket_route("/ws")
def ws(session):
"""ws"""
pass # pragma: no cover
@app.route("/users", methods=["GET", "HEAD"])
def list_users(request):
"""
responses:
200:
description: A list of users.
examples:
[{"username": "tom"}, {"username": "lucy"}]
"""
pass # pragma: no cover
@app.route("/users", methods=["POST"])
def create_user(request):
"""
responses:
200:
description: A user.
examples:
{"username": "tom"}
"""
pass # pragma: no cover
@app.route("/orgs")
class OrganisationsEndpoint(HTTPEndpoint):
def get(self, request):
"""
responses:
200:
description: A list of organisations.
examples:
[{"name": "Foo Corp."}, {"name": "Acme Ltd."}]
"""
pass # pragma: no cover
def post(self, request):
"""
responses:
200:
description: An organisation.
examples:
{"name": "Foo Corp."}
"""
pass # pragma: no cover
@app.route("/schema", methods=["GET"], include_in_schema=False)
def schema(request):
return schemas.OpenAPIResponse(request=request)
更多文档
此包基本上是一个代理,因此如果你想知道如何做某事,这里是你需要的来源
测试
克隆存储库
激活venv . venv/bin/activate
安装依赖项
poetry install
运行测试
./scripts/test
贡献
欢迎提交PR!
项目详情
关闭
starlette_apispec-2.2.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b2cd3721a3cc7ebc31610e8470c12c6efff453a5732892285e4076c73f164f96 |
|
MD5 | f0388b7b287fb2bc161e7527a4757193 |
|
BLAKE2b-256 | 06f3f8678f7fc5e432c52ea6dac6072c6083d56c69e8f1e0e170c908681284bc |
关闭
starlette_apispec-2.2.1-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 14b64f8551a06f2d4f1762940a0b4e1ec6c87b85d945bbc8dc8bfcf30e592ce6 |
|
MD5 | 2c2ccfd146732de3e8a6ce02c57ec57d |
|
BLAKE2b-256 | 34004155910178cd10828746e005e957ffae6d1f04e943b0ff6155912110e17b |