用这个喷火器点燃你的API

flama的Python项目详细描述


Flama

用这个喷火器点燃你的api。

Build StatusCoveragePackage version


文档https://flama.perdy.io


弗拉玛

flama的目标是在Starlette之上添加一层,以提供一种易于学习快速开发方法 构建高性能的graphql和restapi。与Starlette一样,Flama也是 开发asynchronousproduction ready服务。

它具有以下特点:

  • 泛型类用于在sqlalchemy表上提供标准crud方法的api资源。
  • schema系统基于Marshmallow,它允许declare端点的输入和输出,并提供 根据这些模式验证数据的可靠方法validate
  • 依赖注入简化了管理端点所需参数的过程。flama asgi对象 像RequestResponseSession等等都被定义为组件并准备好注入到端点中。
  • components作为插件生态系统的基础,允许您创建自定义或使用 你的端点,作为参数注入。
  • 使用openapi标准自动生成api架构。它使用端点的模式系统来提取 生成API架构所需的信息。
  • 自动生成的文档提供Swagger UIReDoc端点。
  • 分页使用多种方法(如限制和偏移、页码)自动处理…

要求

安装

$ pip install flama

示例

frommarshmallowimportSchema,fields,validatefromflama.applicationsimportFlamaimportuvicorn# Data SchemaclassPuppy(Schema):id=fields.Integer()name=fields.String()age=fields.Integer(validate=validate.Range(min=0))# Databasepuppies=[{"id":1,"name":"Canna","age":6},{"id":2,"name":"Sandy","age":12},]# Applicationapp=Flama(components=[],# Without custom componentstitle="Foo",# API titleversion="0.1",# API versiondescription="Bar",# API descriptionschema="/schema/",# Path to expose OpenAPI schemadocs="/docs/",# Path to expose Swagger UI docsredoc="/redoc/",# Path to expose ReDoc docs)# Views@app.route("/",methods=["GET"])deflist_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[puppyforpuppyinpuppiesifpuppy["name"]==name]@app.route("/",methods=["POST"])defcreate_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)returnpuppyif__name__=='__main__':uvicorn.run(app,host='0.0.0.0',port=8000)

依赖关系

遵循Starlette哲学Flama减少了作为核心的硬依赖项的数量:

  • ^{}-火焰是它上面的一层。
  • ^{}-flama数据模式和验证。

它没有更多的硬依赖项,但其中一些是使用某些功能所必需的:

  • ^{}-api模式和文档自动生成所必需的。
  • ^{}-用于api模式和文档自动生成。
  • ^{}-分页需要。
  • ^{}-通用api资源需要。
  • ^{}-通用api资源需要。

您可以使用pip3 install flama[full]安装所有这些。

学分

该库深受APIStar服务器的启发,试图将大量的it本质用于 Starlette作为asgi框架,Marshmallow作为模式系统。

贡献

这个项目是绝对开放的贡献,所以如果你有一个好主意,创建一个问题,让社区 讨论一下。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
windows请帮助获取java。运行程序时发生lang.nullpointerexception   JPA标准中的错误:java。lang.IllegalArgumentException:此JPQLquery中没有名为“:inputMsgId_1_”的参数   java调度一个小程序,从ScheduledExecutorService开始   java点击AVD“创建设备”按钮抛出NullPointerException   缓存Java9WebStart会多次加载jar文件   使用java计算最小二乘   当代理关闭时,java kafka生产者不会抛出异常   我们什么时候以及为什么要在java中进行自定义序列化?   java使用GSON解析包含包含所需字符串的对象的对象数组   java如何使用BOBJ REST API实现分页?   java身份验证失败:用户的凭据已过期。CAS v4。2.   合并排序中的java无限循环?   java jackson xml将pojo子元素转换为字符串   tcp Java ObjectOutputStream重置错误   如何调用。bat文件,并使用java中的ProcessBuilder发送字符串   奇怪的Java数学结果   java如何在Android中禁用最近的活动按钮?   java刷下应用程序崩溃   使用Java收集所有VersionOne资产及其所有属性   Java打印:创建具有最小可接受边距的页面格式