Python教程-用于构建API的流行Python框架
Python是一种非常多才多艺的编程语言,它允许我们轻松执行复杂任务。在本教程中,我们将了解用于构建API的常用Python框架。在此之前,让我们了解一下什么是API以及它是如何工作的。
什么是API?
API是Application Programming Interface的缩写,它是一种软件中介,用于实现两个应用程序之间的通信。例如,我们从在线购物门户购买产品并使用API进行支付。
让我们来看一个现实世界的例子,假设你在一家餐厅,拿着菜单准备点菜。厨房就像一个“系统”,会准备你点的食物,但厨房怎么知道你点了什么,或者你如何与厨师沟通以制作你的订单呢?
这时候,等待员API就登场了。等待员会将你的点菜请求送到厨房,系统会准备食物,然后等待员会将食物送回来。
构建API的顶级框架
有许多框架可用,但并非所有框架都适用于API。以下是一些流行且重要的框架。
1. Django Rest Framework
Django REST是一个强大的基于Django的框架,开发人员使用它来创建API。在Django REST中,REST代表表现状态传输。它用于数据通信的基于Web的体系结构。HTTP请求用于在机器之间进行调用。Django REST框架中使用了四种标准方法:GET、PUT、POST和DELETE。
它提供了创建丰富API的最简单方式。我们可以使用PIP命令安装Django REST框架。要使用Django REST框架,Python版本应为3.5+,并且系统必须安装Django。
Django REST特点 -
- 全球各地拥有庞大的活跃社区。
- 它受到组织的信任,如Red Hat、Mozilla和Heroku。
- 它还提供了测试、调试和缓存的支持。
- 对Django的URL路由提供自动支持。
- 构建复杂API所需的代码较少。
缺点
- 默认工具众多,对新手来说学习难度较大。
- 由于缺乏适当的指导,新项目可能会遇到包装组件方面的问题。
2. Flask REST Framework
Flask REST框架与Django REST框架类似。它用于快速构建API。Flask以轻量级项目而闻名,只需要少量代码即可构建API。
借助这个框架,开发人员可以轻松创建API,并且不断添加新功能到Flask REST框架中。
Flask RESTful特点 -
- Flask是非常轻量级的框架,容易安装。
- 它提供了用于处理威胁的默认安全性,如注入攻击、数据完整性检查等。
- 提供了添加自定义字段和基于数据类型的输入的功能。
- 提供了支持其他表示形式(如XML、CSV、HTML)的representation()装饰器。
- marsal_with()装饰器用于数据格式化。
缺点
- 不能用于较大的MVC项目。
- 尽管Flask非常灵活,但早期的自定义可能会延迟扩展和生产。
3. Falcon
Falcon是一个高性能的Web框架,用于构建大规模应用程序后端和微服务。我们可以使用面向对象和基于类的接口开发API。它与多个服务器高度兼容。
Falcon于2013年由Kurt Griffiths开发。虽然有广泛的社区提供有价值的意见,但Falcon关注质量控制。
Falcon特点 -
- 它是轻量级的,需要最少的设置。
- 提供快速开发。
- 集成了NoSQL。
- 提供了内置服务器和用于开发的调试器。
- 提供了出色的性能。
缺点
- 不适合HTML页面。
- 缺少内置Web服务器。
- 其文档相对较不全面,与像django和flask这样的其他框架相比。
4. Pyramid
Pyramid是一个混合型Web框架,充当Django和Flask之间的桥梁。它可用于两种类型的项目,既不太大也不太小。Django通过Twitter和Google Group跟踪Pyramid的进展。Pyramid的开发人员不断致力于其发展,自首次发布以来已发布了十个版本。Pyramid的当前版本是1.10。
Pyramid特点 -
- Pyramid用于文件构建,因此以不容易出错的方式打包。它为新手提供了一种安全网。
- 支持所有Python版本。
- 允许开发人员通过插件进行强大的API、URL映射和高度可扩展性。
- 用户可以创建相当大的项目模板。
- Pyramid带有名为pcreate的引导工具,它与基于SQLAlchemy和ZODB的众多模板兼容。
缺点 -
- 其模板语法可能相对复杂。
- 从Django迁移到XHTML结构可能会感到陌生和复杂。
5. FastAPI
顾名思义,FastAPI是用于构建API的最快和高性能的Python框架。该框架可以以200到300%的速度开发API。其社区正在迅速增长。它基于ASGI,主要用于构建异步Web应用程序。
- 交互式API文档
- 减少代码的重复
- 高度安全且具有内置身份验证
- 无限支持插件
- 具有直观的编辑器支持(VSCode/PyCharm),具有自动完成功能。
缺点
- 请求验证需要花费大量时间。
- 主文件比较拥挤。
- 依赖注入中没有单例。
6. Eve
Eve框架是基于Flask和Cerberus构建的。它使API的开发变得简单而快速。它可以轻松创建可自定义的REST Web服务。Eve通常用于中等规模的项目。Nicola Iarocci于2013年初开发了这个框架,自首次发布以来已经更新了33次。
Eve特点 -
- 默认支持过滤、排序、资源分页和HATEOAS。
- 支持完整的CRUD操作范围。
- 支持CORS(跨源资源共享)。
- 具有高级功能,如SQL数据库、MongoDB、ElasticSearch和Neo4j等。
缺点
- 适用于中等规模项目,无法处理大型项目。
- 寻找合适的扩展可能需要一些时间。
7. CherryPy
CherryPy是一种极简主义的Web框架,它是面向对象的,并且符合HTTP/1.1标准。CherryPy的主要目标是提供快速开发。它缩小了所有源代码库。它由Remi Delon开发,于2002年发布。现在由CherryPy社区维护。Netflix这家领先的视频流媒体公司使用CherryPy来构建选择项目的基础。
CherryPy特点 -
- 面向对象编程减少了开发时间,也减小了代码库的大小。
- 它具有用于身份验证、静态内容、缓存和会话的内置工具。
- 它可以为动态和用户相关内容提供服务。
- 它提供了对JSON的内置支持。
缺点
- 会话可能不会默认启用。
- 如果页面处理程序没有正确编写,具有权限的用户可以访问任何文件。
8. Cornice
Cornice是Pyramid的REST框架,提供了构建REST Web服务的帮助程序。它在可能的情况下自动处理HTTP规范。
Cornice特点
- 消息中提供了三个字段 - 发件人、内容、颜色(红色或黑色)。
- 添加消息是通过身份验证完成的。
- Cornice中的一个路径等于一个服务。
- 支持为所有路由添加URL前缀。
缺点
- 消息只能使用单个通道。
- 如果已经注册了具有相同名称的用户,他/她无法注册。
- 所有消息和用户都存储在内存中。
结论
本教程包括了创建API广泛使用的最流行的框架。每个框架都有其优点和缺点,用户可以根据自己的需求选择其中任何一个。