python三大开发框架django、 flask 和 fastapi 对比

这篇具有很好参考价值的文章主要介绍了python三大开发框架django、 flask 和 fastapi 对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文讲述了什么启发了 FastAPI 的诞生,它与其他替代框架的对比,以及从中汲取的经验。
如果不是基于前人的成果,FastAPI 将不会存在。在 FastAPI 之前,前人已经创建了许多工具 。
几年来,我一直在避免创建新框架。首先,我尝试使用许多不同的框架,插件和工具来解决 FastAPI 涵盖的所有功能。

但是有时候,没有更好的办法,除了创建具有所有这些功能的东西,从以前的工具中汲取最佳创意,并以最佳方式将它们组合起来,使用以前甚至没有的语言功能(Python 3.6+类型提示)。

启发过 FastAPI 的框架

Django

Django 是最流行的 Python 框架,受到广泛信任。它用于构建 Instagram 之类的系统。

它与关系数据库(例如 MySQL 或 PostgreSQL)相对紧密地结合在一起,因此,以NoSQL 数据库(例如 Couchbase,MongoDB,Cassandra 等)作为 django 的主存储引擎并不是一件容易的事。

Django REST Framework

Django REST Framework 是一个非常灵活的框架,用于构建 Web API,以改善 Django 的 API 功能。

Mozilla,Red Hat 和 Eventbrite 等许多公司都使用它。

Django REST Framework 是第一个自动生成 API 文档的框架,自动生成 API 的接口文档是 FastAPI 框架诞生的缘由之一。

注意

Django REST Framework 框架的作者是 Tom Christie ,Tom Christie 也创造了 Starlette和 Uvicorn。FastAPI 正是建立在 Starlette 和 Uvicorn 的基础之上。

启发 FastAPI 地方:有一个自动 API 文档,Web 用户界面可供用户测试。

Flask

Flask 是一种轻量级的框架,它不包括数据库集成,也没有很多的附带的功能,虽然这Django 那里是默认提供的。

这个简单性和灵活的特性允许使用 NoSQL 数据库作为主数据存储。尽管文档在某些方面有所技术性,但它非常简单,因此学习起来相对直观。

它还常用于其他不需要数据库,用户管理或 Django 中预建功能的应用程序。尽管其中许多功能都可以通过添加插件来实现。

各个模块之前的解耦,使之成为一个“微框架”,可以通过扩展为精确地提供所需的东西,这是我想要保留的一项关键功能。

考虑到 Flask 的简单性,它似乎很适合构建 API。接下来要找到的是 Flask的 “ Django REST Framework”。

启发 FastAPI 地方:成为一个微框架。易于混合和匹配所需的工具和零件。拥有一个简单易用的路由系统。

Requests

FastAPI 实际上不是 Requests 的替代工具。它们的适用范围非常不同。实际上,在FastAPI 应用程序内部使用 Requests 是很常见的。

但是,FastAPI 从 Requests 中获得了很多启发。Requests  是一个与API(作为客户端)进行交互的库,而 FastAPI 是一个用于构建 API(作为服务器)的库。它们或多或少地处于相反的末端,彼此互补。Requests  具有非常简单直观的设计,非常易于使用,并具有合理的默认值。但同时,它非常强大且可自定义。

这就是为什么,如官方网站所述:

Requests 是有史以来下载次数最多的Python软件包之一

您的使用方式非常简单。例如,要发出GET请求,您可以编写:

response = requests.get("http://example.com/some/url")

FastAPI 对应的 API 路径操作如下所示:

@app.get("/some/url")
def read_url():
    return {"message": "Hello World"}

它们使用起来的相似之处如 requests.get(…) 和 @app.get(…)

启发 FastAPI 地方:

拥有简单直观的API。

直接,直观地使用HTTP方法名称(操作)。

具有合理的默认值,功能强大的自定义。

Swagger / OpenAPI

我想要 Django REST Framework 的主要功能是自动 API 文档。然后我发现 API 文档有一个标准叫 Swagger ,它使用 JSON 或 YAML 来描述。

并且 Swagger API 的 Web 用户界面已经被人创建出来了。因此,能够为 API 生成Swagger 文档将允许自动使用此 Web 用户界面。

在某个时候,Swagger 被授予 Linux Foundation,将其重命名为 OpenAPI。这就是为什么在谈论版本 2.0 时通常会说“ Swagger”,对于版本3+来说是“ OpenAPI”。

启发 FastAPI 地方:
  为API规范采用开放标准,而不是使用自定义架构。并集成基于标准的用户界面工具:
   Swagger UI
  ReDoc

选择这两个是因为它们相当受欢迎且稳定,但是通过快速搜索,您可以找到数十个 OpenAPI 的其他替代用户界面(可以与FastAPI一起使用)。

Flask REST frameworks

有几个 Flask REST frameworks ,但经过调查和试用,我发现,不少项目都停产或放弃,还存在有一些长期的问题,使得它们并不适合解决前面的问题。

Marshmallow

一个由 API 系统所需的主要功能是数据的序列化,就是把数据从编程语言中的对象转称成可以在网络上传输的对象,比如数据库中的数据转换为 JSON 对象。将 Python 中的datetime 对象转为字符串,等等。

另外一个功能就是数据的验证,确保传入的参数是有效的,例如,有些字段是一个 int,类型而不是字符串,这在检测输入数据是非常有用的。

如果没有数据验证,你就必须用手工写代码来完成所有的检查。

这两点功能就是 Marshmallow 所提供的,这些是一个伟大的图书馆,之前我经常使用它。

Marshmallow 产生之前 Python 还没有加入类型提示。因此,定义一个 schema 你需要引入 Marshmallow 特定的 utils 的和类。

启发 FastAPI 地方:
使用代码来定义提供的数据类型和验证的 schema,验证都是自动化的。

FastAPI 使用的框架

Pydantic

Pydantic 是一个库,基于Python类型提示来定义数据验证,序列化和文档(使用JSON模式)。这使其非常直观。它可与 Marshmallow 媲美。尽管在基准测试中它比Marshmallow 更快。并且由于它基于相同的Python类型提示,因此对编辑器的支持非常棒。

FastAPI 使用它来处理所有数据验证,数据序列化和自动模型文档(基于JSON Schema)。

然后,FastAPI 会获取该 JSON Schema 数据并将其放入OpenAPI 中,除此之外它还会执行其他所有操作。

Starlette

Starlette 是一种轻量级的 ASGI 框架/工具包,是构建高性能 asyncio 服务的理想选择。

它非常简单直观。它的设计易于扩展,并具有模块化组件。

它具有:

  • 令人印象深刻的性能。

  • WebSocket支持。

  • GraphQL支持。

  • 处理中的后台任务。

  • 启动和关闭事件。

  • 测试基于 requests 的客户端。

  • CORS,GZip,静态文件,流式响应。

  • 会话和 Cookie 支持。

  • 100% 的测试覆盖率。

  • 100% 类型注释的代码库。

  • 零硬依赖性。

Starlette 是目前测试最快的 Python 框架。只有 Uvicorn 超越了它,Uvicorn 不是框架,而是服务器。

Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自动数据验证,序列化或API 文档。
这是 FastAPI 在顶部添加的主要内容之一,全部基于Python类型提示(使用Pydantic)。以及依赖注入系统,安全实用程序,OpenAPI 模式生成等。

技术细节:ASGI 是 Django 核心团队成员开发的新“标准”。尽管他们正在这样做,但它仍然不是“ Python标准”(PEP)。但是,它已经被多种工具用作“标准”。这可以大大提高互操作性,因为您可以将 Uvicorn 切换到任何其他 ASGI 服务器(例如 Daphne 或 Hypercorn),也可以添加与ASGI兼容的工具,例如 python-socketio。

FastAPI 使用它来处理所有核心 Web 部件。在顶部添加功能。类 FastAPI 本身直接继承Starlette。因此,使用 Starlette 可以执行的任何操作,都可以直接使用 FastAPI 进行。
Uvicorn

Uvicorn 是基于 uvloop 和 httptools 构建的如闪电般快速的 ASGI 服务器。它不是Web框架,而是服务器。例如,它不提供用于按路径进行路由的工具。那是像 Starlette(或FastAPI)这样的框架可以提供的。它是 Starlette 和 FastAPI 的推荐服务器。

FastAPI 推荐它为主 Web服务器运行 FastAPI 应用程序。您可以将其与 Gunicorn 结合使用,以拥有异步多进程服务器。在“ 部署” 部分中查看更多详细信息。

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

django flask,软件测试,职场经验,程序员,python,django,flask,测试工具,程序人生,软件测试,自动化测试

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

django flask,软件测试,职场经验,程序员,python,django,flask,测试工具,程序人生,软件测试,自动化测试

全部资料获取

django flask,软件测试,职场经验,程序员,python,django,flask,测试工具,程序人生,软件测试,自动化测试文章来源地址https://www.toymoban.com/news/detail-682804.html

到了这里,关于python三大开发框架django、 flask 和 fastapi 对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FastAPI 快速学习之 Flask 框架对比

           本文主要对 FastAPI 与 Flask 框架进行对比,以助快速学习。进一步了解FastAPI的高级使用方法,可参考 FastAPI官方文档 。如果对你有帮助,欢迎三连 收藏 点赞 关注 !!!          Flask作为Python语言中的老牌Web框架,已经被应用于大量的Python Web开发项目,其使用

    2024年01月17日
    浏览(43)
  • Python web 框架对比:Flask vs Django

    哈喽大家好,我是咸鱼 今天我们从几个方面来比较一些现在流行的两个 python web 框架——Flask 和 Django,突出它们的主要特性、优缺点和简单案例 到最后,大家将更好地了解哪个框架更适合自己的特定需求 参考链接:https://djangocentral.com/flask-vs-django-selecting-the-perfect-python-web

    2024年02月11日
    浏览(48)
  • Python Web开发:Django与Flask框架

    Django和Flask都是Python中非常受欢迎的Web开发框架。虽然它们都是用于构建Web应用程序的工具,但它们在设计理念、使用方式和适用场景等方面存在一些差异。 Django Django是一个“大而全”的框架,遵循MVC设计模式。它内置了很多功能,如ORM(对象关系映射)、模板引擎、表单处

    2024年02月22日
    浏览(53)
  • 软件测试 | 测试开发 | Django+Celery框架自动化定时任务开发

    ** 本章介绍使用DjCelery即Django+Celery框架开发定时任务功能,在Autotestplat平台上实现单一接口自动化测试脚本、业务场景接口自动化测试脚本、App自动化测试脚本、Web自动化测试脚本等任务的定时执行、调度、管理等,从而取代Jenkins上的定时执行脚本和发送邮件等功能。** 自动

    2023年04月08日
    浏览(56)
  • Flask vs. Django:选择适合你的Web开发框架【第134篇—Flask vs. Django】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在选择一个适合你项目的Web开发框架时,常常会遇到 Flask 和 Django 这两个流行的选择。两者都有其优势和适用场景,本文将探讨它们的特点,

    2024年03月26日
    浏览(60)
  • 面试之 Python 框架 Flask、Django、DRF

    Django:大而全的框架。它的内部组件比较多,如 ORM、Admin、中间件、Form、ModelForm、Session、缓存、信号、CSRF等,功能也都很完善。 flask:微型框架,内部组件就比较少了,但是有很多第三方组件来扩展它,比如 wtform(与django的modelform类似,表单验证)、flask-sqlalchemy(操作数

    2024年02月05日
    浏览(54)
  • 软件测试——接口测试框架Flask与测试工具Postman、PyMySQL

    什么是Flask: Flask是一个Python Web框架,通常被称为微框架。它旨在保持应用程序的核心简单且可扩展。与其他Web框架不同,Flask没有用于数据库处理的内置抽象层,也没有形成验证支持。相反,Flask支持扩展以将这些功能添加到应用程序中。Flask的优势在于它可以与你珠联璧合

    2024年04月13日
    浏览(54)
  • Flask or FastAPI? Python服务端初体验

    最近由于工作需要,又去了解了一下简单的python服务搭建的相关工作,主要是为了自己开发的模型或者工具给同组的人使用。之前介绍的针对于数据科学研究比较友好的一个可以展示的前端框架Streamlit可以说是一个利器。不过,随着ChatGPT的流行,基于chat的服务越来越多了起

    2024年02月08日
    浏览(37)
  • Python Flask框架-开发简单博客-项目布局、应用设置

    作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,只在于他所拥有的。所以可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的专栏文章知识点全面细致,逻辑清晰、结合实战,让你在学习路

    2024年02月02日
    浏览(47)
  • 基于 Python 的 Flask 框架开发的在线电影网站系统(附完整源码)

    今天我给大家分享的是基于Python的Flask框架开发的在线电影网站系统,大家平时需要哪个方面的项目都可以在每篇文章的下面留言,我后续会在公众号分享出来。 该项目为基于Python的Flask框架搭建的在线电影网站 项目介绍:网站前端采用HTML5编写,使用Bootstrap前端开发框架,后

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包