所有文章 > AI驱动 > FastAPI:高效的Python Web框架的库

FastAPI:高效的Python Web框架的库

1. 为啥选FastAPI?

写过Django或Flask的都知道,这俩框架各有各的好。但FastAPI借鉴了它们的优点,还加入了很多现代特性。它基于Python 3.6+的类型提示功能,写代码时编辑器直接就能提示哪里写错了,不用等到运行才发现bug。

from fastapi import FastAPI

app = FastAPI()

@app.get(“/”)

def read_root():

return {“message”: “你好啊,朋友”}

温馨提示:

FastAPI强制要求Python 3.6以上版本,因为需要用到类型提示这个特性。装之前记得看看自己Python版本够不够格。

2. 自动生成API文档

这个功能太爽了!写完代码后,直接访问 /docs 路径就能看到超漂亮的API文档,都不用自己写。代码里加点注释,文档就自动生成了。

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

def read_item(item_id: int, q: str = None):

“”“

获取商品信息

- item_id: 商品ID

- q: 可选的查询参数

”“”

return {“item_id”: item_id, “q”: q}

3. 请求验证有多简单

以前验证请求数据可费劲了,现在用 Pydantic 模型,轻轻松松就搞定:

from pydantic import BaseModel

class Item(BaseModel):

name: str

price: float

is_sale: bool = False

@app.post(“/items/”)

def create_item(item: Item):

return item

要是数据格式不对,FastAPI自动返回错误信息,都不用自己写验证逻辑了,美滋滋。

4. 异步处理超给力

FastAPI原生支持异步编程,处理并发请求特别在行:

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

async def read_item_async(item_id: int):

# 假装在查数据库

await some_async_operation()

return {“item_id”: item_id}

温馨提示:

用异步函数时记得加asyncawait关键字,不然代码虽能跑,但压根不是异步的。

5. 依赖注入很灵活

想在多个接口间共享代码?依赖注入帮你搞定:

def get_current_user(token: str):

if not token:

raise HTTPException(status_code=401)

return {“user”: “当前用户”}

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

def read_user(user: dict = Depends(get_current_user)):

return user

写项目一段时间就发现了,FastAPI是真的香。代码写起来快,运行起来也快,还自带各种方便的特性。新手友好,大佬也不嫌弃。

有人可能担心性能问题。放心,FastAPI底层用的是 Starlette 和 Uvicorn ,性能相当棒。测试显示比很多其他Python框架都快好几倍。

实在想不出还有啥理由不试试FastAPI。拿来写API简直完美,特别是搞些小项目,分分钟就能搭起来。代码写得少,bug也少,开发效率杠杠的。

本文章转载微信公众号@iAmin啾

#你可能也喜欢这些API文章!