Python Web 路由详解:核心知识点全覆盖

文章目录

Python Web 路由详解:核心知识点全覆盖

本文以直白、通俗的方式,系统讲解 Python Web 开发中路由的核心概念、工作原理、常见写法与使用细节,不讲废话、不堆冗余内容,让你一篇吃透路由到底是什么、怎么用、为什么这么写。


一、什么是路由?一句话讲明白

路由 = 请求地址 + 对应执行的函数

浏览器访问一个 URL,比如:

复制代码
http://127.0.0.1:8000/login

后端根据 /login 这个路径,找到提前绑定好的函数并执行,这个**"路径匹配 + 函数调用"**的机制,就叫路由。

你可以理解为:

路由就是 Web 框架里的"导航员"。


二、路由的核心作用

  1. 规定用户访问哪个地址,执行什么逻辑
  2. 区分不同业务接口(登录、注册、上传、查询等)
  3. 接收前端传参(路径参数、查询参数、表单等)
  4. 决定返回什么内容(HTML、JSON、文件等)

三、一个最简单的路由示例(以 FastAPI 为例)

python 复制代码
from fastapi import FastAPI

app = FastAPI()

# 路由:访问 / 时,执行下面函数
@app.get("/")
def index():
    return {"message": "首页"}

# 路由:访问 /login 时,执行登录逻辑
@app.post("/login")
def login():
    return {"message": "登录接口"}
  • @app.get("/"):装饰器,用来注册路由
  • /:请求路径
  • get:请求方法
  • 下面的函数:路径匹配成功后执行的逻辑

四、路由的四大基本要素

1. 请求方法(Method)

最常用就 4 种:

  • GET:查询、获取数据(查)
  • POST:提交、新增数据(增)
  • PUT:更新数据(改)
  • DELETE:删除数据(删)

框架会根据方法+路径一起匹配,方法不对直接 405 错误

2. 请求路径(Path)

就是 URL 里域名后面的部分:

  • /
  • /user
  • /upload
  • /article/123

3. 视图函数 / 接口函数

路径匹配成功后真正干活的函数。

4. 响应结果

函数 return 什么,前端就收到什么。


五、路由传参方式(最常用的 3 种)

1. 路径参数(直接写在 URL 里)

python 复制代码
@app.get("/user/{user_id}")
def get_user(user_id: int):
    return {"用户ID": user_id}

访问:/user/1001,就能拿到 user_id=1001

2. 查询参数(? 后面的参数)

python 复制代码
@app.get("/search")
def search(keyword: str, page: int = 1):
    return {"关键词": keyword, "页码": page}

访问:/search?keyword=python&page=2

3. 请求体参数(POST、表单、JSON)

python 复制代码
from pydantic import BaseModel

class User(BaseModel):
    username: str
    password: str

@app.post("/register")
def register(user: User):
    return {"账号": user.username}

六、路由前缀与分组(实际开发必用)

项目大了以后,接口会非常多,必须模块化拆分

以 FastAPI APIRouter 为例:

python 复制代码
from fastapi import APIRouter

user_router = APIRouter(prefix="/user", tags=["用户模块"])

@user_router.get("/info")
def user_info():
    return {"msg": "用户信息"}

最终访问路径:/user/info

好处:

  • 结构清晰
  • 方便权限控制
  • 便于维护和文档分类

七、路由匹配规则(非常重要)

  1. 精确匹配优先
    /user/info 会优先匹配写死的路由,而不是 /user/{id}
  2. 顺序从上到下匹配
    前面的路由先匹配,匹配成功就不再往下走
  3. 方法必须一致
    定义 @app.get,前端用 post 访问会报错
  4. 路径大小写敏感
    /Login/login 是两个不同路由

八、其他 Python Web 框架路由对比(一眼看懂)

Flask 路由

python 复制代码
from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Hello"

Django 路由(urls.py

python 复制代码
from django.urls import path
from . import views

urlpatterns = [
    path("", views.index),
    path("login/", views.login),
]

思想完全一致:路径 → 函数


九、路由常见错误

  1. 404 Not Found
    路径写错、路由没注册、方法不匹配
  2. 405 Method Not Allowed
    用 post 访问了 get 接口
  3. 参数类型错误
    路径参数应该是 int,传了字符串
  4. 路由重复注册
    同一个路径+方法绑定了多个函数

十、总结(极简版)

  • 路由 = 地址 + 函数
  • 核心:方法 + 路径 + 函数 + 参数
  • 传参分三种:路径参数、查询参数、请求体
  • 大型项目一定要用路由分组(Router)
  • 匹配顺序:从上到下,精确优先
相关推荐
cd ~/Homestead2 小时前
Vue 配置跨域的两种方法
前端·javascript·vue.js
鲸渔2 小时前
【C++ 变量与常量】变量的定义、初始化、const 与 constexpr
java·开发语言·c++
Moment2 小时前
AI 全栈时代,为什么推荐 NodeJs 服务端使用 NestJs
前端·javascript·后端
Moment2 小时前
AI全栈入门指南:什么是 NestJs
前端·javascript·后端
happymaker06262 小时前
Vue自定义指令、插槽、路由的简单使用
前端·javascript·vue.js
不会写DN2 小时前
SQL 单表操作全解
java·服务器·开发语言·数据库·sql
fengci.2 小时前
ctfshow黑盒测试后半部分
前端
翻斗包菜2 小时前
零基础入门 Flask 框架
后端·python·flask
平安的平安2 小时前
Python 实现 AI 图像生成:调用 Stable Diffusion API 完整教程
人工智能·python·stable diffusion