首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

REST API开发:FastAPI框架快速上手

Python的FastAPI框架真是让人眼前一亮,它吸收了Flask和Django的精华,还加入了不少现代化的特性。咱们今天就来聊聊这个新秀框架,看看它是怎么帮我们又快又好地开发REST API的。

框架特点

FastAPI是个异步优先的框架,基于Python 3.6+的类型提示功能构建。它支持异步编程,性能相当棒。跟其他框架比起来,它的代码写起来特别简洁,而且自带API文档,写好代码文档就自动生成了,贼方便。

from fastapi import FastAPI

from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):

name: str

price: float

is_offer: bool = None

@app.get(“/”)

async def read_root():

return {“Hello”: “World”}

@app.get(“/items/{item_id}”)

async def read_item(item_id: int):

return {“item_id”: item_id}

数据校验

写API最烦人的就是参数校验了,FastAPI用了Pydantic这个库,数据校验变得超级简单。你只要定义好数据模型,框架就会自动帮你处理参数校验,出错了还会返回友好的错误提示。

from typing import Optional

from pydantic import BaseModel, Field

class UserCreate(BaseModel):

username: str = Field(..., min_length=3, max_length=20)

email: str = Field(..., regex=r“^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$”)

age: Optional[int] = Field(None, ge=0, le=120)

@app.post(“/users/”)

async def create_user(user: UserCreate):

return user

小贴士:

记得给所有的路径操作函数加上async关键字

Pydantic模型的字段类型要写明确,别用Any

数据验证失败会自动返回422状态码

依赖注入

FastAPI的依赖注入系统特别好用,比如要做用户认证、数据库连接这些常见操作,直接用Depends就搞定了。

from fastapi import Depends, HTTPException

from typing import Annotated

async def get_db():

db = Database()

try:

yield db

finally:

db.close()

@app.get(“/users/me”)

async def read_users_me(db: Annotated[Database, Depends(get_db)]):

return await db.get_current_user()

中间件和异常处理

写API肯定要处理各种异常情况,FastAPI的异常处理机制就很优雅。中间件的写法也很直观,想加个请求计时器轻轻松松。

from fastapi import HTTPException

import time

class TimerMiddleware(BaseHTTPMiddleware):

async def dispatch(self, request, call_next):

start_time = time.time()

response = await call_next(request)

process_time = time.time() - start_time

response.headers[“X-Process-Time”] = str(process_time)

return response

app.add_middleware(TimerMiddleware)

@app.exception_handler(HTTPException)

async def custom_http_exception_handler(request, exc):

小贴士:

自定义异常处理器要放在应用启动前注册

中间件的执行顺序是后进先出

异常处理要考虑全面,别让用户看到500错误

FastAPI这么多高级特性,关键是用起来并不复杂。它的性能也相当给力,每秒能处理几万个请求不在话下。文档也写得特别清楚,看得我都想给开发团队打钱了。

要是你以前写过Django或Flask,上手FastAPI绝对是分分钟的事。就算你是第一次接触Web框架,照着文档撸两天也能搞出个像样的API服务。

推 荐 阅 读

点赞分享

让钱和爱流向你

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OuB_fAFd-9bqvyv3T5jwht0A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券