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

FastAPI,构建API的极速利器!

看到 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的魅力了吧?赶紧去试试呗,保证你会爱上它!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券