Starlette API 层继承自 APIStar
项目描述
为 Starlette 启动 API
文档:https ://starlette-api.perdy.io
星光API
Starlette API 旨在在 Starlette 之上添加一个层,以提供一种快速简便的方法来构建高性能 REST API。
它已准备好生产并提供以下功能:
- API 资源的通用类,在 SQLAlchemy 表上提供标准 CRUD 方法。
- 基于Marshmallow的模式系统允许声明端点的输入和输出,并提供一种针对这些模式验证数据的可靠方法。
- 依赖注入简化了端点所需参数的管理过程。Starlette ASGI 对象(如
Request
、Response
等Session
)被定义为组件并准备好注入您的端点。 - 组件作为插件生态系统的基础,允许您创建自定义或使用已在端点中定义的组件,作为参数注入。
- 使用 OpenAPI 标准自动生成的 API 模式。它使用您的端点的模式系统来提取所有必要的信息来生成您的 API 模式。
- 自动生成的文档,提供Swagger UI或ReDoc端点。
- 使用限制和偏移、页码等多种方法自动处理分页...
要求
安装
$ pip install starlette-api
例子
from marshmallow import Schema, fields, validate
from starlette_api.applications import Starlette
# Data Schema
class Puppy(Schema):
id = fields.Integer()
name = fields.String()
age = fields.Integer(validate=validate.Range(min=0))
# Database
puppies = [
{"id": 1, "name": "Canna", "age": 6},
{"id": 2, "name": "Sandy", "age": 12},
]
# Application
app = Starlette(
components=[], # Without custom components
title="Foo", # API title
version="0.1", # API version
description="Bar", # API description
schema="/schema/", # Path to expose OpenAPI schema
docs="/docs/", # Path to expose Swagger UI docs
redoc="/redoc/", # Path to expose ReDoc docs
)
# Views
@app.route("/", methods=["GET"])
def list_puppies(name: str = None) -> Puppy(many=True):
"""
description:
List the puppies collection. There is an optional query parameter that
specifies a name for filtering the collection based on it.
responses:
200:
description: List puppies.
"""
return [puppy for puppy in puppies if puppy["name"] == name]
@app.route("/", methods=["POST"])
def create_puppy(puppy: Puppy) -> Puppy:
"""
description:
Create a new puppy using data validated from request body and add it
to the collection.
responses:
200:
description: Puppy created successfully.
"""
puppies.append(puppy)
return puppy
依赖项
遵循 Starlette 哲学 Starlette API 将硬依赖的数量减少到用作核心的那些:
starlette
- Starlette API 是它之上的一层。marshmallow
- Starlette API 数据模式和验证。
它没有更多的硬依赖,但其中一些是使用某些功能所必需的:
pyyaml
- API Schema 和 Docs 自动生成所必需的。apispec
- API Schema 和 Docs 自动生成所必需的。python-forge
- 需要分页。sqlalchemy
- 通用 API 资源所必需的。databases
- 通用 API 资源所必需的。
您可以使用pip3 install starlette-api[full]
.
学分
该库最初是对 APIStar 的改编,可与Starlette一起使用,但大量代码已被重写以使用Marshmallow作为模式系统。
贡献
这个项目对贡献是绝对开放的,所以如果你有一个好主意,请创建一个问题让社区讨论它。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
starlette-api-0.7.0.tar.gz
(38.2 kB
查看哈希)
内置分布
starlette_api-0.7.0-py3-none-any.whl
(135.1 kB
查看哈希)
关
starlette_api -0.7.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1bac39dd89942d27f52c2a6cf00e35eea77c61c23c189248ce69379391e3666a |
|
MD5 | 0e7f56a876a23e25ad2c2ecc0deded55 |
|
布莱克2-256 | 39cfb6a9f4c698a902b4ff429f862ee84158a29527b0d8d4f41c1062a27758aa |