跳转到主要内容

为Starlette提供APISpec支持

项目描述

为Starlette提供易于集成的APISpec

GitHub Workflow Status Codecov PyPI PyPI - Python Version
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)

更多文档

此包基本上是一个代理,因此如果你想知道如何做某事,这里是你需要的来源

Starlette文档

APISpec文档

测试

  1. 克隆存储库

  2. 激活venv . venv/bin/activate

  3. 安装依赖项

poetry install
  1. 运行测试

./scripts/test

贡献

欢迎提交PR!

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

starlette_apispec-2.2.1.tar.gz (4.1 kB 查看哈希)

上传时间

构建分布

starlette_apispec-2.2.1-py3-none-any.whl (4.4 kB 查看哈希)

上传时间 Python 3

支持