首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python 测试开发请关注这个新框架

如果你之前有接触 python 测试开发,那你应该会听过 django 或者 flask。 但是最近一个新的框架出现在人们的视野中,短短 1 年在 GitHub 上就收集了 20000+ star, 成为一个不折不扣的明星项目。

这个项目是由塞巴斯蒂安·拉米雷斯(Sebastian Ram írez)创建的,他在实现一个机器学习项目的时候创建了这个框架,并且优化至今。拉米雷斯留着达利那样的胡子,看起来像一个艺术家。

这个框架有什么高级特性让他在这么短时间内可以追赶 django 和 flask 呢?

1、FastAPI 的使用方法和设计参考了几十个 python 明星项目,博采众长,吸收各家精华;

2、FastAPI 和 Flask 一样简约;

3、FastAPI 非常新,并且基于 python3.6 的类型声明系统;

4、自动生成文档;

5、类型声明和数据检验;

6、内置身份认证;

7、性能强;

8、原生支持异步;

9、强大的依赖注入系统;

10、GraphQL 和 WebSocket 支持。

自动文档

FastAPI 内置 2 种文档:swaggerui 和 Redoc, 当你编写好接口以后,可以直接查看文档,甚至可以进行简单的测试。这些都是由 FastAPI 自动打包的。允许您将更多精力放在代码上,而不是设置工具。

类型声明

一直以来,python 的类型传递都是被诟病的,在 python3.6 以后,类型声明已经比较完善,而 Pydantic 这个库基于 python 的标准语法进行类型检查。 FastAPI 集成了 pydantic 这个优秀的库进行数据检验, 让你用更少的代码方便的进行数据检验。

而且加了类型声明以后,你能更方便的在 pycharm 这样的工具当中得到代码智能提示,这点比 Flask 好太多了。

数据检验

由于集成了 Pydantic。您可以验证任意的 python 标准类型,也可以验证其他的数据,比如:

JSON 对象(dict)

JSON 数组(list)

具有最小和最大长度的字符串(str)

带最小值和最大值的 float

统一资源定位地址(URI)

电子邮件(Email)

UUID

身份认证

这是任何 API 的关键部分,现代社会几乎任何的产品和服务都需要你登录。FastAPI 把标准的身份认证集成到了框架内部。它提供

HTTP Basic

OAuth2 (JWT tokens)

放在 header, 查询字符串或者 cookie 中的 key

性能

这恐怕是 FastAPI 最值得炫耀的地方。它太快了!不仅编码速度快,而且处理请求的速度也非常快!你可以在 techempower 查询到最新的性能表现对弈。

天生支持异步

使用 FastAPI 你可以写同步代码,但是如果你需要一些异步操作,你可以非常轻松的完成切换。最简单的,你可以直接在函数前面加一个 async, 这个在 Flask 当中是不能做的, 在 django 中也并不容易。

@app.post('/user')

async def user(req: Request):

  user = await req.form()

  return pages.TemplateResponse(

      'user.html',

      {'request': req, 'uid': user.get('username', '')}

  )

强大的依赖注入系统(Dependcy Injection)

FastAPI 的依赖注入非常炫酷,他允许你通过非常简单的方式去解决一些依赖问题,不需要多余的配置。比如如果你想在处理请求时操作数据库,你可以把数据库操作注入:

@app.post("/articles//comments")

def post_comment(article_id: int, comment: Comment, database = Depends(get_database)):

  # database 数据库操作

  return {"msg": "comment posted!"}

GraphQL 和 WebSocket 支持

GraphQL 在使用复杂的数据模型时比 REST 有用多了。当前端的微小变化需要后端的查询数据时表现非常亮眼。Flask 和 Django 可以安装插件处理,在 FastAPI 中,这是经过集成的。FastAPI 同样支持 WebSocket

总结

FastAPI 是你在进行 python Web 开发的时候不容错过的一个框架。以前的 Web 框架设计之初都是开发网站的,所以通常带有 HTML 模板渲染,而 FastAPI 专心给你提供 API, 如果你像让他返回 HTML, 也可以轻松引入模板引擎。

本文作者:柠檬班软件测试(lemonban)——专注于最新最前沿的软件测试技术,解决你的测试技术烦恼,对软件测试感兴趣的朋友赶快关注我们吧!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200927A037RY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券