Python 在这个领域有非常成熟和强大的框架,最主流和推荐的是 Flask 和 Django。

- Flask: 轻量级、灵活,被称为“微框架”,适合快速开发小型应用、API 服务,或者作为大型项目的某个模块,学习曲线平缓。
- Django: 功能全面、重量级的“全能框架”,它自带了 ORM(数据库交互)、后台管理、用户认证等大量功能,适合开发大型、复杂的网站项目。
对于“接口”这个需求,Flask 是最直接、最合适的选择,下面的讲解将主要围绕 Flask 展开,最后会简要介绍 Django。
使用 Flask(最推荐,适合初学者和 API 开发)
Flask 的核心思想是让你用最少的代码创建一个 Web 应用。
安装 Flask
你需要安装 Flask,打开你的终端或命令行工具,运行:
pip install Flask
创建一个最简单的 Web 服务器(Hello World)
让我们从一个最基础的例子开始,它只是返回一个 "Hello, World!" 字符串。

创建一个名为 app.py 的文件:
# 1. 导入 Flask 类
from flask import Flask
# 2. 创建一个 Flask 应用实例
# __name__ 是一个 Python 预定义变量,它表示当前模块的名称。
# Flask 用它来定位资源文件(如模板、静态文件)。
app = Flask(__name__)
# 3. 使用装饰器 @app.route() 来定义 URL 路由
# '/' 是根路径,也就是网站的首页。
# 当用户访问网站的根 URL 时,下面的 hello_world 函数就会被调用。
@app.route('/')
def hello_world():
return 'Hello, World!'
# 4. 运行这个 Web 服务器
# if __name__ == '__main__': 确保这个脚本只有在直接运行时才会启动服务器,
# 而不是在被其他脚本导入时启动。
# debug=True 开启调试模式,这样代码修改后服务器会自动重启,并且出错时会显示详细的错误信息。
if __name__ == '__main__':
app.run(debug=True)
运行服务器:
在终端中,进入到 app.py 所在的目录,然后运行:
python app.py
你会看到类似这样的输出:
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: ...
打开你的浏览器,访问 http://127.0.0.1:5000,你就能看到页面上的 "Hello, World!" 了。
创建一个返回 JSON 数据的 API 接口
API 通常返回 JSON 格式的数据,因为这种格式易于被各种客户端(如手机 App、前端 JavaScript)解析。
让我们修改 app.py,添加一个新的接口 /api/info,它返回一个 JSON 对象。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
# 新增一个 API 接口
@app.route('/api/info')
def get_info():
# jsonify 函数会将 Python 字典转换为 JSON 格式的响应
# 并且自动设置正确的 Content-Type 头为 application/json
data = {
'name': 'My First API',
'version': '1.0',
'author': 'Python Developer'
}
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
测试新接口:
- 重新运行
python app.py。 - 在浏览器中访问
http://127.0.0.1:5000/api/info。 - 你会看到浏览器显示:
{ "author": "Python Developer", "name": "My First API", "version": "1.0" } - 更专业的测试方式:使用
curl命令(在终端中运行)或 Postman 等工具。curl http://127.0.0.1:5000/api/info
处理动态 URL 和 HTTP 方法
API 经常需要根据 URL 中的参数来返回不同的数据,并且支持不同的 HTTP 方法(如 GET, POST, PUT, DELETE)。
from flask import Flask, jsonify, request
app = Flask(__name__)
# 模拟一个简单的数据库
users = {
1: {'name': 'Alice', 'email': 'alice@example.com'},
2: {'name': 'Bob', 'email': 'bob@example.com'}
}
# GET /api/users/<user_id> - 获取单个用户信息
# <user_id> 是一个动态部分,它会作为参数传入函数
@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = users.get(user_id)
if user:
return jsonify(user)
# 如果用户不存在,返回 404 Not Found 错误
return jsonify({'error': 'User not found'}), 404
# POST /api/users - 创建一个新用户
@app.route('/api/users', methods=['POST'])
def create_user():
# 从请求的 JSON body 中获取数据
# request.get_json() 会解析请求体中的 JSON 数据
if not request.is_json:
return jsonify({'error': 'Request must be JSON'}), 400
data = request.get_json()
new_id = max(users.keys()) + 1
users[new_id] = {
'name': data.get('name'),
'email': data.get('email')
}
# 返回新创建的用户信息,并设置 HTTP 状态码为 201 (Created)
return jsonify(users[new_id]), 201
if __name__ == '__main__':
app.run(debug=True)
测试动态接口:
-
获取用户 1:
curl http://127.0.0.1:5000/api/users/1 # 输出: {"email":"alice@example.com","name":"Alice"} -
获取不存在的用户:
curl http://127.0.0.1:5000/api/users/99 # 输出: {"error":"User not found"} -
创建新用户:
curl -X POST \ -H "Content-Type: application/json" \ -d '{"name": "Charlie", "email": "charlie@example.com"}' \ http://127.0.0.1:5000/api/users # 输出: {"email":"charlie@example.com","name":"Charlie"}-X POST: 指定 HTTP 方法为 POST。-H "Content-Type: application/json": 设置请求头,告诉服务器我们发送的是 JSON 数据。-d '...': 指定请求体的内容。
使用 Django(适合大型项目)
如果你计划构建一个功能非常全面的网站,并且不希望自己处理太多底层细节,Django 是一个很好的选择。
安装 Django
pip install Django
创建项目和 App
Django 使用“项目”和“应用”的概念来组织代码。
# 创建一个名为 myproject 的项目 django-admin startproject myproject # 进入项目目录 cd myproject # 创建一个名为 api 的应用,专门用来放我们的接口 python manage.py startapp api
配置 URL 和视图
-
配置项目总 URL (
myproject/urls.py):from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), # 将所有 /api/ 开头的请求转发到 api 应用的 urls.py ] -
创建应用 URL (
api/urls.py): 这个文件需要你手动创建。from django.urls import path from . import views # 导入当前应用的视图函数 urlpatterns = [ # 当访问 /api/users/ 时,调用 views.user_list 函数 path('users/', views.user_list, name='user_list'), ] -
编写视图函数 (
api/views.py):from django.http import JsonResponse def user_list(request): # Django 的视图函数默认接收一个 request 对象 # 我们可以检查 request.method 来区分 GET 和 POST if request.method == 'GET': # 模拟数据 data = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, ] # JsonResponse 会自动将 Python 列表/字典转换为 JSON 响应 return JsonResponse(data, safe=False) # safe=False 允许列表作为根元素 elif request.method == 'POST': # 在实际项目中,这里会解析 request.body 获取 JSON 数据 # 并进行数据库操作 return JsonResponse({'message': 'User created successfully'}, status=201) # 其他方法返回 405 Method Not Allowed return JsonResponse({'error': 'Method not allowed'}, status=405)
运行 Django 服务器
# 在 myproject 目录下运行 python manage.py runserver
你可以访问 http://127.0.0.1:8000/api/users/ 来测试你的 API。
总结与对比
| 特性 | Flask | Django |
|---|---|---|
| 定位 | 微框架,灵活,轻量 | 全能框架,功能全面 |
| 核心优势 | 简单、易于上手、扩展性强 | 开箱即用、自带 ORM、Admin、安全特性 |
| 学习曲线 | 平缓 | 较陡峭 |
| 适合场景 | - API 服务 - 小型网站 - 大型项目的某个模块 |
- 大型内容管理系统 - 电商网站 - 需要快速开发后台管理的项目 |
| 代码风格 | 自由度高,项目结构由开发者决定 | 强制约定,遵循“MTV”(Model-Template-View)模式 |
给你的建议:
- 如果你的目标是学习如何创建 API,或者项目规模不大,强烈推荐从 Flask 开始,它能让你快速理解 Web 服务器和 API 的核心概念。
- 如果你计划做一个功能完整的网站,并且希望 Django 帮你处理好数据库、后台管理等琐事,那么选择 Django 会更高效。
