看到 FastAPI 这个词,我就忍不住跟大家分享一下。
这可是Python界的后起之秀,短短几年就火得不得了。
它不仅速度快得飞起,而且写起来特别舒服,代码简洁得让人直呼过瘾。
这不,趁着周末我就给大家好好说道说道。
安装和第一个API
要用FastAPI,先把它装到咱们的电脑上:
pip install fastapi
pip install uvicorn
搞定这俩东西,咱就能开始写API了。来个最简单的例子:
from fastapi import FastAPI
app = FastAPI()
@app.get(“/”)
def hello_world():
return {“message”: “你好呀,朋友!”}
这代码保存成main.py,然后在终端里敲:uvicorn main:app --reload,就能跑起来了。
温馨提示:别忘了那个--reload参数,加上它后修改代码不用重启服务器,开发起来贼方便。
请求和响应
搞API最常见的就是处理各种请求了。FastAPI这方面可太强了:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
@app.post(“/users”)
def create_user(user: User):
return {“name”: user.name, “age”: user.age}
这段代码里用了个 Pydantic模型 ,它能自动帮咱们验证数据。比如有人传个字符串给age,FastAPI直接就帮你拦住了,贴心得很。
路径参数和查询参数
API里经常要从URL里取值,FastAPI对这块儿处理得特别溜:
@app.get(“/items/{item_id}”)
def read_item(item_id: int, q: str = None):
if q:
return {“item_id”: item_id, “q”: q}
return {“item_id”: item_id}
看到没,item_id是路径参数,q是查询参数。访问/items/123?q=test时,两个值都能拿到。
温馨提示:路径参数和查询参数不一样,路径参数是必须的,查询参数可选。搞混了可就尴尬了。
自动生成API文档
说到这个我就得炫耀一下了,FastAPI直接就给你整了个漂亮的API文档。启动服务器后访问/docs,啥都有了:
@app.get(“/items”, tags=[“items”])
def list_items():
“”“
获取所有商品列表
返回一个包含所有商品信息的列表
”“”
return [{“name”: “商品1”}, {“name”: “商品2”}]
写个文档字符串,API文档立马就能看到详细说明,不用额外配置啥。这功能简直绝了!
异常处理
写API肯定会遇到各种错误情况,FastAPI处理起来也是特别优雅:
from fastapi import HTTPException
@app.get(“/users/{user_id}”)
def get_user(user_id: int):
if user_id > 100:
raise HTTPException(
status_code=404,
detail=“哎呀,找不到这个用户啊!”
)
return {“user_id”: user_id}
遇到问题直接扔个异常,FastAPI自动帮你转成合适的HTTP响应。
说实话,用了FastAPI后,我都不想用别的框架了。它不仅语法简单,性能还贼棒。我现在几乎所有新项目都用它,写起来是真的爽。不过话说回来,它最适合那种需要快速开发API的场景,要是你项目有特殊需求,还是得好好评估一下。
代码写到这,你们应该都感受到FastAPI的魅力了吧?赶紧去试试呗,保证你会爱上它!
领取专属 10元无门槛券
私享最新 技术干货