PyPyBridge

实战:用 Spring 的脑子写一个 FastAPI

Controller、DTO、校验、依赖注入在 FastAPI 里的对应物,以及自动生成的 Swagger 文档。

18 分钟 · 右栏代码可点击「运行」


同一个接口的两个世界

Java
1@RestController
2@RequestMapping("/api")
3public class UserController {
4
5 @GetMapping("/users/{uid}")
6 public Map<String, String> user(
7 @PathVariable String uid) {
8 return Map.of("id", uid);
9 }
10}
11// 启动:mvn spring-boot:run
Python
1from fastapi import FastAPI
2
3app = FastAPI()
4
5@app.get("/api/users/{uid}")
6def get_user(uid: str) -> dict[str, str]:
7 return {"id": uid}
8
9# 启动:uvicorn main:app --reload
10# 文档:http://localhost:8000/docs 自动生成
  • 本课代码需要本地安装:uv add fastapi uvicorn。游乐场跑不了 Web 服务,但语法都来自前面几课。
Spring BootFastAPI备注
@RestControllerFastAPI() + 路由装饰器函数即端点
DTO + Bean ValidationPydantic BaseModel校验规则写在类型上
@Autowired / DIDepends(...)依赖声明在参数里
application.yml.env + pydantic-settings类型化配置
springdoc-openapi内置/docs 自动可用
@Async / WebClientasync def 端点原生异步

DTO 与校验:Pydantic 取代 Bean Validation

Java
1public record CreateUser(
2 @NotBlank String name,
3 @Email String email,
4 @Min(0) int age
5) {}
Python
1from pydantic import BaseModel, EmailStr, Field
2
3class CreateUser(BaseModel):
4 name: str = Field(min_length=1)
5 email: EmailStr
6 age: int = Field(ge=0)
7
8# 校验失败自动返回 422,无需手写检查

到这一步,Java 迁移路线的「语言」部分已经完成。AI 方向的下一步通常是:httpx 调用大模型 API → pydantic 结构化输出 → 用 asyncio 并发请求。这些全是本路径已学概念的直接组合。