全书目录

第二十九篇:Flask 完全指南 —— 轻骑兵微服务街区宇宙

第四章:路、窗口、信使 —— Flask 的基本请求处理模型

1 分钟 216 字 第 521 / 962 个阅读单元

在 Flask 里,一条路对应一个窗口。

py
from flask import Flask, request, jsonify, abort

app = Flask(__name__)

@app.get("/missions/<int:mission_id>")
def get_mission(mission_id: int):
    verbose = request.args.get("verbose") == "1"
    if mission_id <= 0:
        abort(404)

    payload = {
        "id": mission_id,
        "name": "夜巡北门",
        "status": "ready",
        "verbose": verbose,
    }
    return jsonify(payload)

@app.post("/missions")
def create_mission():
    data = request.get_json(silent=True) or {}
    if "name" not in data:
        return {"error": "name is required"}, 400

    return {"id": 101, "name": data["name"], "status": "created"}, 201

这时候你应该建立起这张图:

text
HTTP 请求
   │
   ▼
URL + Method 匹配
   │
   ├── GET /missions/7
   └── POST /missions
   ▼
对应 view function
   │
   ├── 读 request.args
   ├── 读 request.json / form / headers / cookies
   ├── 调业务逻辑
   └── return 响应
   ▼
Flask 转成 Response

Flask 视图函数常见返回值非常灵活:

  • str:返回文本或 HTML
  • dict:返回 JSON
  • (body, status_code):带状态码
  • (body, status_code, headers):带头
  • Response 对象:完全自己控制

这就是 Flask 典型的“轻装备风格”:

你不需要先学很厚的抽象层,先会收请求、做判断、回响应,就已经能干活。