Skip to content

Flask、Express、Next.js 写法不同,都在接请求 ​

先分清三个词 ​

服务器 ​

运行后端代码的电脑或云端运行环境。

后端 ​

运行在服务器上的程序逻辑:接收请求、检查权限、访问数据库、调用第三方服务、返回响应。

后端框架 ​

帮助你组织路由、请求和响应的工具。Flask、Express 和 Next.js Route Handlers 都属于这一层。

text
服务器       厨房所在的房间
后端程序     厨师和工作流程
框架         厨房里的工作台、叫号系统和标准流程

同一个“保存留言”接口 ​

目标完全相同:接收 POST /api/messages,读取 text,返回新留言。

Flask:Python ​

py
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.post('/api/messages')
def create_message():
    text = request.json.get('text', '')
    message = save_message(text)
    return jsonify(message), 201

Express:JavaScript / TypeScript ​

ts
app.post('/api/messages', async (req, res) => {
  const text = req.body.text
  const message = await saveMessage(text)
  return res.status(201).json(message)
})

Next.js Route Handler:TypeScript ​

文件通常放在:

text
app/api/messages/route.ts
ts
export async function POST(request: Request) {
  const { text } = await request.json()
  const message = await saveMessage(text)
  return Response.json(message, { status: 201 })
}

语法不同,但都完成:

text
声明 POST 和地址
  ↓
读取请求 JSON
  ↓
执行保存逻辑
  ↓
返回 201 和 JSON

什么时候选哪一种 ​

已经有 Python 项目或 AI 处理脚本 ​

Flask 容易和 Python 库放在一起。

前后端都想使用 TypeScript,后端独立运行 ​

Express 常见,路由和中间件生态成熟。

前端已经是 Next.js,希望页面和 API 在同一项目 ​

Route Handler 可以减少独立后端项目,但它仍然是后端代码,不会因为和 React 放在同一仓库就变成前端。

后端必须负责什么 ​

text
身份验证        这个请求是谁发的
权限判断        这个人能不能改这条数据
输入验证        text 是否为空或过长
业务规则        是否允许删除、额度是否足够
秘密管理        数据库密码和第三方 API Key
数据访问        查询、写入和事务
错误响应        返回合适状态码和可理解信息

前端可以提前做输入提示,但最终规则必须留在后端。

后端不等于数据库 ​

后端是执行逻辑的程序,数据库是保存数据的系统。

text
后端说:请保存用户 7 的留言“你好”
数据库说:已写入 messages 表,ID 是 42

后端可以暂时不使用数据库,例如返回计算结果;数据库也不会自己决定页面按钮该显示什么。

后端怎样启动 ​

不同项目可能使用:

bash
python app.py
npm run server
pnpm dev

真正命令要看 README 和项目说明文件。启动成功时会显示监听地址和端口,例如:

text
Server listening on http://localhost:3000

前端怎样找到后端 ​

开发时可能是:

text
前端 http://localhost:5173
后端 http://localhost:3000

前端请求:

ts
fetch('http://localhost:3000/api/messages')

也可能通过开发代理,让前端仍写 /api/messages。线上则可能同域名或不同域名。

后端错误去哪里看 ​

text
浏览器 Network     看到状态码和返回信息
本地后端终端        看到真实异常、文件和行号
部署平台日志        看到线上启动和运行错误

Network 的 500 是结果;服务器日志才可能写出 DATABASE_URL is not defined。

Next.js 的 API 文件和 React 页面在同一个项目,所以 API 代码可以安全地在浏览器读取数据库管理员密钥吗?

答案:不可以。Route Handler 是后端运行位置,可以读取服务器变量;React 客户端代码会进入浏览器。是否同一仓库不改变安全边界。

写给想驾驭 AI,而不只是依赖 AI 的 Vibe Coder。