第一篇:FastAPI 入门

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 APIs 和 Web 应用程序,特别适合 Python 3.6 及更高版本。它基于标准的 Python 类型提示,并且提供了自动的 JSON 到 Python 类型的解析、自动的 Swagger UI 文档生成等功能,使得开发既高效又直观。下面是一份基础的学习指南,可以帮助你开始 FastAPI 的学习之旅。

第一篇:FastAPI 入门

1. 安装 FastAPI

首先,确保你的环境中安装了 Python 3.6 或更高版本。然后,通过 pip 安装 FastAPI 和 Uvicorn(一个高性能的 ASGI 服务器):

pip install fastapi uvicorn
2. 编写第一个 FastAPI 应用

创建一个名为 main.py 的文件,并输入以下内容:

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

这个简单的应用定义了一个路由(“/”),当访问这个路径时,会返回一个 JSON 响应 {“Hello”: “World”}。

3. 运行应用

在终端中,切换到包含 main.py 的目录,并运行以下命令启动应用:

uvicorn main:app --reload

这将以开发模式启动应用,任何代码更改都会自动重启服务。访问 http://127.0.0.1:8000/ 查看结果。

第二篇:路由和请求处理

1. 添加更多路由

main.py 中添加更多路由来处理不同类型的HTTP请求:

@app.post("/items/{item_id}")
def create_item(item_id: int):
    return {"item_id": item_id}

@app.put("/items/{item_id}")
def update_item(item_id: int):
    return {"message": f"Item {item_id} has been updated."}
2. 参数和类型提示

FastAPI 通过类型提示自动处理请求参数和响应类型,如上面的例子所示,item_id 被自动推断为整数类型。

第三篇:请求体与响应模型

1. 请求体处理

使用 Pydantic 来定义请求体模型:

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = 10.5

@app.post("/items/")
def create_item(item: Item):
    return item
2. 响应模型

定义响应模型以结构化响应数据:

class ResponseItem(BaseModel):
    item_id: int
    name: str

@app.post("/items/response-model/")
def create_item_response(item: Item):
    return ResponseItem(item_id=1, name=item.name)

第四篇:依赖注入与安全性

FastAPI 提供了依赖注入功能,可用于处理认证、数据库连接等。

1. 基本依赖
from fastapi import Depends

def common_parameters(q: str = None, skip: int = 0, limit: int = 100):
    return {"q": q, "skip": skip, "limit": limit}

@app.get("/items/")
def read_items(commons: dict = Depends(common_parameters)):
    return commons
2. 安全性:OAuth2 和 JWT

FastAPI 支持多种安全机制,包括 OAuth2。这里简单介绍使用 JWT 进行认证的基础。

首先,安装 fastapi-jwt-auth

pip install fastapi-jwt-auth

然后,配置 JWT 认证:

from fastapi.security import OAuth2PasswordBearer
from fastapi_jwt_auth import AuthJWT

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

@app.get("/protected")
async def protected(Authorize: AuthJWT = Depends()):
    Authorize.jwt_required()
    current_user = Authorize.get_jwt_subject()
    return {"user": current_user}

注意,这里的代码仅为示例,实际应用中你需要实现 token 的颁发、刷新等逻辑。

结语

这只是 FastAPI 学习的开始。FastAPI 还支持数据库集成(如 SQLAlchemy)、异步编程、性能优化等多种高级功能。建议深入阅读官方文档,进行实践,并参考社区的教程和示例项目,以加深理解和掌握。FastAPI 的强大之处在于其简洁而强大的API设计,以及对现代Web开发最佳实践的支持。祝你学习愉快!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值