flask轻量易用,几行代码即可启动api服务;处理post需检查content-type并合理使用get_json;fastapi自动类型校验与文档生成更优;cors配置须避免通配符与凭据共存。

用 Flask 快速启动一个可调用的 API 服务
不需要框架全家桶,Flask 足够轻量且直接对应 HTTP 方法。装完后几行代码就能响应 GET 请求:
from flask import Flask, request, jsonify
app = Flask(__name__)
<p>@app.route('/users', methods=['GET'])
def get_users():
return jsonify([{'id': 1, 'name': 'Alice'}])</p>
运行 flask run 后访问 http://127.0.0.1:5000/users 就能拿到 JSON。注意默认只监听本地,生产环境必须加 --host=0.0.0.0 才能被外部访问。
处理 POST 请求时读不到 request.json 怎么办
常见错误是前端发了 application/x-www-form-urlencoded 或没带 Content-Type: application/json,导致 request.json 为 None。正确做法是先检查请求头:
- 前端必须设置
headers: {'Content-Type': 'application/json'} - 后端可用
request.get_json(force=True)强制解析(绕过 MIME 检查,但不推荐长期用) - 更稳妥的是统一用
request.get_json(silent=True)+ 判空,再 fallback 到request.form处理表单数据
FastAPI 和 Flask 在路径参数与类型校验上的关键差异
FastAPI 把类型提示直接变成参数校验和 OpenAPI 文档,Flask 需要手动写逻辑。比如获取用户 ID:
# FastAPI:自动校验 int 类型,422 错误直接返回
@app.get("/users/{user_id}")
def read_user(user_id: int):
return {"user_id": user_id}
<h1>Flask:得自己转、自己捕获 ValueError</h1><p>@app.route("/users/<user_id>")
def read_user(user_id):
try:
uid = int(user_id)
except ValueError:
return {"error": "user_id must be integer"}, 400</user_id></p>
如果项目需要自动生成文档或强类型保障,FastAPI 省掉大量胶水代码;如果只是内部小工具或已有 Flask 生态,硬切不划算。
跨域请求被浏览器拦截,CORS 配置别只写 *
Access-Control-Allow-Origin: * 在有凭据(如 Cookie、Authorization header)时会失效。真实场景中:
- 开发阶段用
flask-cors插件最省事:CORS(app, origins=["http://localhost:3000"]) - 生产环境必须明确指定
origins,不能用通配符 +supports_credentials=True -
FastAPI同理,add_middleware(CORSMiddleware, allow_origins=[...])中allow_origin_regex可用于多子域场景,但 regex 性能略低
真正上线前,务必用浏览器开发者工具的 Network 面板看预检请求(OPTIONS)是否返回了正确的 Access-Control-Allow-Headers,尤其是自定义 header 名称拼写错误这种低级但难发现的问题。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











