Python库的多样性使得它们可以在不同的应用场景中发挥作用,不同场景下同一个库可能拥有不同的功能,本系列未来会有不同的分类,可能会出现相同的库。数量很多,慢慢整理。文中的示例都是最基础的用法,有些就顺手写了,有些就丢给Ai,看个乐就行。
1. Django REST Framework (DRF) – Django 的 REST API 开发工具
功能: DRF 是一个强大的工具包,用于构建 RESTful API,提供序列化、认证、权限等功能。
使用场景:
- 构建 Django 基于的 REST API。
- 需要序列化、认证、权限控制的 API。
- 快速开发高质量的 API。
示例:
from rest_framework import serializers, viewsets from .models import Item class ItemSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Item fields = ['url', 'title', 'description'] class ItemViewSet(viewsets.ModelViewSet): queryset = Item.objects.all() serializer_class = ItemSerializer
2. FastAPI – 内置 OpenAPI 支持的高效框架
功能: FastAPI 是一个高性能的 Python 框架,用于构建 API,支持异步处理和自动生成 OpenAPI 文档。
使用场景:
- 需要高性能的 API 开发。
- 自动生成 API 文档。
- 与 Pydantic 数据验证结合的项目。
示例:
from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") async def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}
3. Flask-RESTful – 为 Flask 添加 REST API 支持
功能: Flask-RESTful 是一个 Flask 扩展,简化了 RESTful API 的开发。
使用场景:
- 构建基于 Flask 的 REST API。
- 需要快速、简单的 API 开发。
- 资源路由和请求解析。
示例:
from flask import Flask from flask_restful import Api, Resource, reqparse app = Flask(__name__) api = Api(app) class Item(Resource): def get(self, item_id): return {"item": item_id} api.add_resource(Item, '/item/<int:item_id>') if __name__ == '__main__': app.run(debug=True)
4. Flask-RESTPlus – 增强型 REST API 框架
功能: Flask-RESTPlus 是 Flask-RESTful 的增强版本,增加了自动生成 Swagger 文档的功能。
使用场景:
- 需要自动生成 API 文档的 Flask 项目。
- 构建基于 Flask 的 REST API 并提供详细的 API 描述。
- 需要增强版的 RESTful API 开发。
示例:
from flask import Flask from flask_restplus import Api, Resource, fields app = Flask(__name__) api = Api(app, version='1.0', title='Sample API', description='A simple demonstration of Flask-RESTPlus') ns = api.namespace('items', description='Items operations') item = api.model('Item', { 'id': fields.Integer(readonly=True, description='The item unique identifier'), 'name': fields.String(required=True, description='The item name') }) @ns.route('/') class ItemList(Resource): @ns.doc('list_items') @ns.marshal_list_with(item) def get(self): return [] @ns.route('/<int:id>') @ns.response(404, 'Item not found') @ns.param('id', 'The item identifier') class Item(Resource): @ns.doc('get_item') @ns.marshal_with(item) def get(self, id): return {} if __name__ == '__main__': app.run(debug=True)
5. Connexion – OpenAPI 和 Swagger 支持
功能: Connexion 是一个 Python 框架,允许开发者使用 OpenAPI (Swagger) 定义来构建 REST API。
使用场景:
- 需要严格遵循 OpenAPI 规范的 API 开发。
- 自动生成 API 文档。
- 与 Swagger 工具集成。
示例:
from connexion import App app = App(__name__, specification_dir='swagger/') app.add_api('my_api.yaml') if __name__ == '__main__': app.run(port=8080)v
6. Graphene – 用于构建 GraphQL API 的库
功能: Graphene 是一个 Python 库,用于构建 GraphQL API,支持 Django 和 Flask。
使用场景:
- 构建 GraphQL API。
- 需要灵活的数据查询和变更的应用。
- 与 Django 或 Flask 集成。
示例:
import graphene class Query(graphene.ObjectType): hello = graphene.String(name=graphene.String(default_value="World")) def resolve_hello(self, info, name): return f'Hello {name}!' schema = graphene.Schema(query=Query) # 运行 GraphQL 服务器 from flask import Flask from flask_graphql import GraphQLView app = Flask(__name__) app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql', schema=schema, graphiql=True)) if __name__ == '__main__': app.run()
7. Ariadne – 现代 GraphQL 框架
功能: Ariadne 是 Python 的现代 GraphQL 框架,提供了一个简单、快速的 API 开发方式。
使用场景:
- 构建高效的 GraphQL API。
- 需要异步处理的 GraphQL 应用。
- 与 ASGI 服务器集成。
示例:
from ariadne import QueryType, gql, make_executable_schema from ariadne.asgi import GraphQL # Define types using Schema Definition Language (SDL) type_defs = gql(""" type Query { hello: String! } """) # Initialize query query = QueryType() # Define resolvers @query.field("hello") def resolve_hello(_, info): return "Hello, world!" # Create executable schema schema = make_executable_schema(type_defs, query) # Create and run ASGI app app = GraphQL(schema, debug=True)
8. PyGraphQL – 轻量级 GraphQL 实现
功能: PyGraphQL 是一个轻量级的 GraphQL 实现,旨在提供一个简单、快速的 GraphQL 服务。
使用场景:
- 需要快速、轻量级的 GraphQL 实现。
- 小型项目或原型开发。
- 与其他 Python 框架集成。
示例:
from pygraphql import GraphQL, QueryType, Field, String schema = GraphQL( QueryType( Field('hello', String, resolver=lambda *args: 'Hello, World!') ) ) # Run the server from pygraphql.server import run_server run_server(schema, host='localhost', port=8080)
9. Falcon – 轻量级、快速的 REST API 框架
功能: Falcon 是一个极简、轻量级的 WSGI 框架,专为构建快速、可扩展的 REST API 而设计。
使用场景:
- 构建高性能的 REST API。
- 微服务架构中的 API 开发。
- 需要低开销、快速响应的应用。
示例:
import falcon class Resource: def on_get(self, req, resp): resp.media = {"message": "Hello, Falcon!"} app = falcon.App() app.add_route('/', Resource()) if __name__ == '__main__': from wsgiref import simple_server httpd = simple_server.make_server('localhost', 8000, app) httpd.serve_forever()
10. Django Channels – 添加 WebSocket 和异步支持
功能: Django Channels 扩展了 Django,添加了实时功能,如 WebSocket、HTTP2 和异步处理。
使用场景:
- 需要实时通信的 Web 应用。
- 构建聊天应用或实时数据更新。
- 与 Django 生态系统集成。
示例:
from channels.routing import ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack from django.urls import path from myapp.consumers import MyConsumer application = ProtocolTypeRouter({ "websocket": AuthMiddlewareStack( URLRouter([ path("ws/myapp/", MyConsumer.as_asgi()), ]) ), })