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

用 FastAPI 构建高性能API:现代Web框架的最佳选择!

##【今日python】用FastAPI构建高性能API:现代Web框架的最佳选择!

今儿个,猫哥带你玩转FastAPI,这玩意儿可是构建高性能API的利器,比Flask和Django更带劲!让你体验飞一般的开发速度!咱们会讲到路由、请求体、数据校验等等,保证你快速上手!

##路由:你的API地图

路由就像你家的门牌号,告诉FastAPI该怎么找到你写的函数。用@app.get("/")、@app.post("/")、@app.put("/")、@app.delete("/")这些装饰器,就能给不同的HTTP请求方法指定不同的处理函数。

fromfastapiimportFastAPI

app=FastAPI()

@app.get("/")

asyncdefread_root():

return{"Hello":"World"}

@app.get("/items/{item_id}")

asyncdefread_item(item_id:int):

return{"item_id":item_id}

你看,多简单!/路径返回"Hello,World",/items/{item_id}路径返回你传的item_id。

##请求体:接收客户端的数据

客户端经常需要给服务器传数据,比如注册用户信息、提交订单啥的。FastAPI用Pydantic这个库来定义数据模型,方便又安全。

fromfastapiimportFastAPI

frompydanticimportBaseModel

app=FastAPI()

classItem(BaseModel):

name:str

price:float

is_offer:bool=None

@app.post("/items/")

asyncdefcreate_item(item:Item):

returnitem

这里定义了个Item模型,包含name、price和is_offer三个字段。@app.post("/items/")装饰器里的item:Item就表示接收一个Item类型的请求体。

##数据校验:别让脏数据搞垮你

FastAPI自动校验请求体数据,不符合Item模型定义的数据,直接给你报错,省心!比如price必须是浮点数,name必须是字符串。

温馨提示:Pydantic的校验功能非常强大,可以定义各种类型、限制条件,甚至自定义校验规则。

##查询参数:灵活的请求过滤

除了路径参数和请求体,FastAPI还支持查询参数,方便你对数据进行过滤和排序。

fromfastapiimportFastAPI

app=FastAPI()

fake_items_db=[{"item_name":"Foo"},{"item_name":"Bar"},{"item_name":"Baz"}]

@app.get("/items/")

asyncdefread_item(skip:int=0,limit:int=10):

returnfake_items_db[skip:skip+limit]

这个例子中,/items/?skip=0&limit=2会返回fake_items_db中的前两个元素。

##异步:提升性能的秘诀

FastAPI基于StarletteUvicorn,天生支持异步,处理并发请求效率杠杠的,甩Flask和Django几条街。

##依赖注入:优雅的代码复用

FastAPI的依赖注入机制可以让你轻松复用代码、管理数据库连接、处理权限认证等等。这玩意儿有点抽象,先简单了解一下,以后再深入研究。

fromfastapiimportFastAPI,Depends

app=FastAPI()

asyncdefcommon_parameters(q:str=None,skip:int=0,limit:int=10):

return{"q":q,"skip":skip,"limit":limit}

@app.get("/items/")

asyncdefread_items(commons:dict=Depends(common_parameters)):

returncommons

common_parameters函数作为依赖项,可以在多个路由中复用。

##中间件:请求的拦截器

中间件可以拦截请求,做一些预处理或后处理,比如记录日志、处理CORS等等。

##异常处理:优雅地处理错误

代码难免会出bug,FastAPI提供了异常处理机制,让你可以优雅地处理错误,返回友好的错误信息给客户端。

如果item_id不存在,就抛出一个404错误。

温馨提示:FastAPI的异常处理机制非常灵活,可以自定义各种异常类型。

今儿个就先聊到这儿,FastAPI的功能远不止这些,还有好多好玩的等着你去探索。猫哥下次再接着唠!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券