一、URL 配置基础
1.1 URLconf 概念
URLconf(URL configuration)是 Django 中将 URL 模式映射到视图的机制。Django 使用 ROOT_URLCONF 设置来指定根 URL 配置模块。
# settings.py
ROOT_URLCONF = 'myproject.urls'
2026/3/20大约 10 分钟
URLconf(URL configuration)是 Django 中将 URL 模式映射到视图的机制。Django 使用 ROOT_URLCONF 设置来指定根 URL 配置模块。
# settings.py
ROOT_URLCONF = 'myproject.urls'
在大型项目中,将所有路由定义在一个文件中会导致代码难以维护。FastAPI 提供了 APIRouter 来实现路由模块化。
# app/api/v1/endpoints/users.py
from fastapi import APIRouter, HTTPException, status
from typing import List
from pydantic import BaseModel
router = APIRouter(
prefix="/users", # 路由前缀
tags=["users"], # 文档标签
responses={404: {"description": "用户不存在"}} # 通用响应
)
class User(BaseModel):
id: int
username: str
email: str
# 模拟数据库
fake_users_db = {}
@router.get("/", response_model=List[User])
async def list_users():
"""获取所有用户列表"""
return list(fake_users_db.values())
@router.get("/{user_id}", response_model=User)
async def get_user(user_id: int):
"""根据 ID 获取用户"""
if user_id not in fake_users_db:
raise HTTPException(status_code=404, detail="用户不存在")
return fake_users_db[user_id]
@router.post("/", response_model=User, status_code=status.HTTP_201_CREATED)
async def create_user(user: User):
"""创建新用户"""
if user.id in fake_users_db:
raise HTTPException(status_code=400, detail="用户已存在")
fake_users_db[user.id] = user
return user
@router.delete("/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
async def delete_user(user_id: int):
"""删除用户"""
if user_id not in fake_users_db:
raise HTTPException(status_code=404, detail="用户不存在")
del fake_users_db[user_id]
路由是 URL 模式与视图函数之间的映射关系。当用户访问某个 URL 时,Flask 会查找匹配的路由,并调用对应的视图函数处理请求。
from flask import Flask
app = Flask(__name__)
# 基本路由
@app.route('/')
def index():
return 'Home Page'
# 指定路径
@app.route('/about')
def about():
return 'About Page'
# 多级路径
@app.route('/user/profile')
def user_profile():
return 'User Profile'