借助AI营销类API,为产品开发和市场定位提供有力支持
如何选择Python REST API 框架?
什么是API?
API是一个软件解决方案,作为中介,使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值:
- 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。
- API不仅仅是几行代码;这些是为移动开发人员等特定受众创建的。
- 这些有清晰的文档和版本,以满足用户的期望。
- 更好的治理和安全性,以及监控以管理性能和可扩展性。
如今,基本每家企业都会使用许多API类型,如天气API、支付处理API、身份认证API、全球新闻API、图像内容审核API等,以丰富企业的服务能力。
也出现了很多以销售API产品为主的企业,如聚合数据、易宝支付、快瞳科技、Authing.cn….等,帮助客户解决某一方面的问题。
Python REST API简介
作为最流行的编程语言之一,Python生态系统提供了各种框架来帮助您构建web API。您可能需要构建一个API来为移动应用程序、前端网站或机器学习项目提供数据。您的项目可能只需要框架提供的路由功能,也可能需要管理界面和模板系统。您选择的框架取决于您的具体用例。为了帮助您选择Python框架,本指南概述了一些用于构建API的知名Python框架,并讨论了它们的差异和优势。
Django REST
Django是一个功能齐全的web开发框架,包括用于用户管理、安全和数据库连接的开箱即用解决方案。要构建web API,您可以使用Django REST框架,该框架构建在标准Django之上。如果您曾经使用RubyonRails、Spring with Kotlin或Java编写过API,那么Django会感觉很熟悉。
何时选择Django-REST构建您的API
如果您的API需要与多个数据库集成、处理复杂和大量的模式迁移、受益于管理功能或提供发现端点,那么Django-REST是一个很好的选择。如果您正在构建企业级应用程序,那么它是一个领先的框架。由于其模块化设计,开发人员可以在没有合并冲突的情况下在单个Django项目上进行协作。
如果你正在寻找一个轻量级的工具来构建REST API,那么 Django 可能不是最合适的选择。在本指南中讨论的四个框架中,Django 相对最为庞大。使用 Django 需要预先掌握较多框架的专业知识和技能。然而,相比于其他框架,Django 内置了最丰富的功能。例如,它有自己的模板引擎,您可以使用它来构建用户界面。它附带了一个对象关系映射器(ORM),它可以根据模型模式的更改自动处理数据库迁移。默认情况下,它提供了一个管理界面,其中有一个用户界面,可以用来向数据库中添加对象。开箱即用,Django还提供了一个UI来试用您的端点:
Django REST Quickstart
要开始使用Django REST框架,请使用pip安装Django和Django RESTframework,pip是Python的包安装程序:
pip install django
pip install djangorestframework
安装完成后,创建一个目录来存储API并移动到该目录中:
mkdir my-api
cd my-api
使用以下命令生成Django项目:
django-admin startproject my-api
django-admin startapp api
之前的命令创建了一系列文件和嵌套目录:
my-api/
manage.py
api/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
Django项目包含一个名为 api
的应用程序。如有必要,您的项目可以包含用于不同资源或服务的多个独立应用程序。请参阅Django官方文档,了解要更新哪些文件以添加新的路由、视图和模型。一旦启动了本地Django项目,就可以开始构建RESTneneneba API。
Flask
Flask是一个流行的Python API微框架,具有最小的依赖性。它拥有只需一个文件和几行代码就能运行应用程序的能力。例如,一个只有一个“Hello,world!”端点的应用程序可以用以下五行代码编写:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
与Django相比,Flask的开箱即用功能要少得多。例如,如果您的Flask应用程序需要HTML模板,则必须配置额外的依赖项。同样,您必须配置数据库集成,并在使用Flask时从头开始创建管理界面。
您可以快速开始使用Flask,并可以对框架的原始设计进行迭代。如果你熟悉Python,你可以学会用较少的前期工作来使用Flask。如果您的团队用Python开发机器学习模型,您可以使用Flask创建服务来交付ML结果。编写服务需要最少的学习时间,因为Python在ML项目的两个领域都有使用。
Flask有大量的文档和视频教程。它的大量文档使Flask相对于类似的微框架具有优势,因为有很多关于如何使用它的现有信息。
FastAPI
FastAPI是一个更新的web框架,类似于Flask。FastAPI中的单个“Hello,world!”端点可以用以下五行代码编写:
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def hello_world():
return {'Hello' : 'world!'}
由于FastAPI相对较新且使用范围不如Flask广泛,所以围绕它的文档资源尚未像Flask那样丰富。然而,FastAPI确实具有一些独特的操作优势。FastAPI默认支持异步操作,这意味着开发者在创建端点时无需手动使用async/await模型。这种异步默认行为使得FastAPI能够在构建API时比Flask或Django具有更低的开销,从而实现更快的速度。
FastAPI依靠类型提示自动在模型和JSON之间进行序列化。因此,只需很少的代码就可以实现数据库模型与JSON响应之间的转换,如下所示:
class Bird(BaseModel):
name: str
bird_type: str
@app.get('/birds')
def list_birds():
return app.db.all()
与Django一样,FastAPI为API的端点提供内置文档,您可以在其中测试请求:
其维护人员提供的文档非常清晰和完整。FastAPI团队似乎已经观察到了其他框架的陷阱,并试图弥补这些弱点。
此框架是为构建API而设计的。具有用户界面的Web应用程序不是此库的目标用例。如果你的应用程序需要大量的界面开发,那么这个框架可能不是正确的选择。
Bottle
Bottle是微型框架中自行指定的微型est。整个库包含一个文件,除了Python本身之外,该文件没有任何依赖项。Bottle中的“Hello,world!”实现可以用以下三行代码编写:
From bottle import run, route
@route(‘/’)
def index():
return ('<h1>Hello, world!</h1>')
当使用Bottle时,任何超出路由定义的东西都需要从头开始实现或包含另一个依赖项。模板、数据库集成和异步操作就是这样。
由于Bottle是相当新的,所以该框架几乎没有有机文档。其维护者提供的文档虽然内容丰富,但目前缺乏FastAPI文档的清晰度和可发现性。尽管这个框架由于其极简主义而成为学生的绝佳选择,但它缺乏商业应用程序通常需要的多功能性或支持。
Django、Flask、FastAPI和Bottle的比较
- Django作为一个可以解决各种业务应用程序问题的框架,其任期和业绩记录使其成为由大型开发团队维护的复杂、长寿命应用程序的好选择。
- Flask的简单性和丰富的文档使其成为轻量级API的绝佳选择。特别是关注逻辑而不是API本身的多功能性的API。
- FastAPI以其内置的异步性和API文档端点而脱颖而出。它的维护人员编写的文档在很大程度上弥补了它年轻时缺乏有机文档的不足。它的用例严格来说是API,而且它在这一点上做得非常好。
- Bottle纯粹的极简主义使其成为向学生介绍API的优秀教学框架。它需要更多的文档和更多的通用性来找到更广泛的用例基础。
开始编写API
如果您想学习如何使用FastAPI框架编写API,请查看以下指南:
参考说明
原文链接: https://www.linode.com/docs/guides/how-to-choose-python-api-framework/#bottle