烧瓶钢筋结合烧瓶,棉花糖,和大摇大摆的强大休息服务。

flask-rebar的Python项目详细描述


Documentation StatusCI StatusPyPI statusCode styleCode of Conduct

Flask Rebar结合了flaskmarshmallowswagger来提供健壮的rest服务。

功能

  • 请求和响应验证-flask rebar依赖于流行的棉花糖包中的模式来验证传入请求和封送传出响应。
  • automatic swagger generation-用于验证和封送处理的模式用于自动生成openapi规范(也称为swagger)。这也意味着通过Swagger UI自动生成文档。
  • 错误处理-来自烧瓶钢筋的未捕获异常将转换为适当的http错误。

示例

fromflaskimportFlaskfromflask_rebarimporterrors,Rebarfrommarshmallowimportfields,Schemafrommy_appimportdatabaserebar=Rebar()# All handler URL rules will be prefixed by '/v1'registry=rebar.create_handler_registry(prefix='/v1')classTodoSchema(Schema):id=fields.Integer()complete=fields.Boolean()description=fields.String()# This schema will validate the incoming request's query stringclassGetTodosQueryStringSchema(Schema):complete=fields.Boolean()# This schema will marshal the outgoing responseclassGetTodosResponseSchema(Schema):data=fields.Nested(TodoSchema,many=True)@registry.handles(rule='/todos',method='GET',query_string_schema=GetTodosQueryStringSchema(),response_body_schema=GetTodosResponseSchema(),# for versions <= 1.7.0, use marshal_schema)defget_todos():"""
    This docstring will be rendered as the operation's description in
    the auto-generated OpenAPI specification.
    """# The query string has already been validated by `query_string_schema`complete=rebar.validated_args.get('complete')...# Errors are converted to appropriate HTTP errorsraiseerrors.Forbidden()...# The response will be marshaled by `marshal_schema`return{'data':[]}defcreate_app(name):app=Flask(name)rebar.init_app(app)returnappif__name__=='__main__':create_app(__name__).run()

有关更完整的示例,请查看位于examples/todo.py的示例应用程序。此示例应用程序的一些示例请求可以在examples/todo_output.md中找到。

安装

pip install flask-rebar

文档

可以找到更广泛的文档here

扩展名

烧瓶钢筋可伸缩!以下是一些开源扩展:

贡献

还有工作要做,鼓励大家贡献!查看contribution guide了解更多信息。

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

推荐PyPI第三方库


热门话题
在数据库中存储密码的java加密方法   java正则表达式否定整个正则表达式   java为什么要得到这个Hashmap输出?   看不到玻璃鱼爪哇SE 6   类对象包装器中的Java基本数据字段   java从文本文件中读取整数并存储到单独的变量中?(扫描仪)   优化大型Java数据阵列的处理和管理   如何使用Java XML包装类创建对象   java为ExecutorService invokeAll()创建包装器   java如何在Android Studio 1.0.0中设置Facebook SDK?获取SDK位置未找到错误   java在尝试从线程启动动画时调用了FromErrorThreadException   java根据哈希确认文件内容   通过java在neo4j中获取索引值相同的所有节点?   java为什么我的Validare邮政编码(布尔)程序返回false?   java会话自动从servlet/jsp生成,尽管存在以下条件:<%@page session=“false”%>   创建新LANsocket时拒绝java连接   java如何多线程更新由sql代码更新的数据库?   安卓 Java使用类作为集合来添加项   安卓为什么我的清单文件不声明java包?