引言

随着Web开发的不断发展,RESTful API已成为现代Web服务的主流设计风格。FastAPI 是一个现代、快速(高性能)的Web框架,用于构建API,它具有异步支持、自动文档生成、验证和授权等功能。本文将带你快速上手,打造一个高效的FastAPI项目模板,并轻松实现RESTful API开发。

快速搭建FastAPI项目

1. 环境准备

首先,确保你的系统中已安装Python 3.6或更高版本。然后,通过以下命令安装FastAPI和相关依赖:

pip install fastapi uvicorn[standard] 

2. 创建项目结构

创建一个新目录作为项目根目录,并在其中创建以下文件和文件夹:

my_project/ │ ├── app/ │ ├── __init__.py │ ├── main.py │ └── models/ │ ├── __init__.py │ └── base.py │ ├── requirements.txt └── README.md 

3. 编写项目代码

main.py

from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} 

models/base.py

from pydantic import BaseModel class Base(BaseModel): id: int created_at: datetime updated_at: datetime 

4. 运行项目

使用以下命令启动项目:

uvicorn my_project.app.main:app --reload 

浏览器访问 http://127.0.0.1:8000/,你应该能看到以下响应:

{ "message": "Hello World" } 

实现RESTful API

1. 定义数据模型

models 文件夹下创建一个新文件 user.py,用于定义用户数据模型:

from typing import Optional from pydantic import BaseModel class User(BaseModel): id: int username: str email: str age: Optional[int] = None 

2. 创建用户路由

main.py 文件中,添加用户相关的路由和视图函数:

from fastapi import HTTPException, Depends, status from sqlalchemy.orm import Session from . import models, schemas from .database import SessionLocal # 数据库会话依赖项 def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.post("/users/", response_model=schemas.User) def create_user(user: schemas.User, db: Session = Depends(get_db)): db_user = models.User(username=user.username, email=user.email, age=user.age) db.add(db_user) db.commit() db.refresh(db_user) return db_user @app.get("/users/{user_id}", response_model=schemas.User) def get_user(user_id: int, db: Session = Depends(get_db)): db_user = db.query(models.User).filter(models.User.id == user_id).first() if db_user is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found") return db_user @app.put("/users/{user_id}", response_model=schemas.User) def update_user(user_id: int, user: schemas.User, db: Session = Depends(get_db)): db_user = db.query(models.User).filter(models.User.id == user_id).first() if db_user is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found") db_user.username = user.username db_user.email = user.email db_user.age = user.age db.commit() db.refresh(db_user) return db_user @app.delete("/users/{user_id}", status_code=status.HTTP_204_NO_CONTENT) def delete_user(user_id: int, db: Session = Depends(get_db)): db_user = db.query(models.User).filter(models.User.id == user_id).first() if db_user is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found") db.delete(db_user) db.commit() return {"detail": "User deleted"} 

3. 运行项目

再次使用以下命令启动项目:

uvicorn my_project.app.main:app --reload 

现在,你可以通过访问以下URL来测试API:

  • 创建用户:POST /users/
  • 获取用户:GET /users/{user_id}/
  • 更新用户:PUT /users/{user_id}/
  • 删除用户:DELETE /users/{user_id}/

总结

通过本文的介绍,你已成功快速上手并打造了一个高效的FastAPI项目模板。你可以根据实际需求,添加更多路由和功能,实现更丰富的RESTful API。希望本文能帮助你轻松实现API开发。