您好,欢迎来到六九路网。
搜索
您的当前位置:首页Python web:Fastapi快速入门

Python web:Fastapi快速入门

来源:六九路网

1. 项目目标

(1)了解fastapi优点

(2)熟悉创建fastapi程序流程

(3)了解fastapi常用CURD操作

2. 项目准备

2.1. 基础准备

系统镜像:Win 11

fastapi官网:

环境准备:

  • python环境3.8以上
  • pycharm
pip3 install uvicorn
pip3 install fastapi

3. 项目实施

3.1. 为什么要使用FastAPI?

在当今快速发展的软件开发领域,构建高质量、高性能的 API 已成为开发者们的共同追求。FastAPI,作为一个新兴的 Python web 框架,以其卓越的性能和简洁的代码结构,迅速在开发者社区中获得了广泛的关注和认可。我个人认为使用FastAPI的理由如下:

  • 更高性能
  • 提高开发效率
  • 简单易学
  • 代码简洁
  • 健壮可靠
3.2. 快速开始FastAPI

(1)新建项目

在pycharm中创建FastAPI项目,第一次启动时pycharm会自动安装fastapi和uvicorn

(2)导入 FastAPI

from fastapi import FastAPI

(3)创建一个 FastAPI实例

app = FastAPI()

变量app就是fastapi类的一个实例,后面的代码都会用上前面创建的这个实例。

(4)创建一个helloworld应用

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

将代码放入 main.py 文件中,然后你可以像下面这样运行 uvicorn:

uvicorn main:app --reload

也可以直接在代码中调用uvicorn:(学习时推荐,不用重复运行uvicorn命令,直接右键run即可)

import uvicorn
if __name__ == "__main__":
    uvicorn.run(app='main:app', host='127.0.0.1', port=8000, reload=True)

运行后控制台输出:

使用浏览器访问http://127.0.0.1:8000:

(5)查看交互式API文档

浏览器访问http://127.0.0.1:8000/docs:

展开后单击“Try it out”

单击“Execute”可以查看到Curl,Responses等信息。

3.3. FastAPI操作

(1)FastAPI有以下操作(这里的「操作」指的是一种 HTTP「方法」)

@app.get() # GET请求 用于读取数据
@app.post() # POST请求 用于创建数据
@app.put() # PUT请求 用于更新数据
@app.delete() # DELETE请求 用于删除数据
@app.options() # OPTIONS请求 用于获取目的资源所支持的通信选项
@app.head() # HEAD请求 用于请求资源的头部信息
@app.patch() # PATCH请求 用于用于对资源进行部分修改
@app.trace() # TRACE请求 用于实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。

(2)FastAPI常用操作

  • POST:创建数据。
  • GET:读取数据。
  • PUT:更新数据。
  • DELETE:删除数据。

(3)GET

GET 请求通常用于从服务器检索数据。

from fastapi import FastAPI

app = FastAPI()

# 假设我们有一个存储了用户信息的内存数据库
fake_db = {
    '1': {'name': 'Alice'},
    '2': {'name': 'Bob'}
}

@app.get("/users/{user_id}")
def read_user(user_id: str):
    return fake_db.get(user_id)

# 获取所有用户
@app.get("/users")
def read_users():
    return fake_db

这个程序使用了两次get:一个用于根据用户ID获取单个用户信息,另一个用于获取所有用户信息。

(4)POST

POST 请求通常用来向服务器发送数据以创建新的资源。

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

fake_db = {}

# 创建一个Pydantic模型,用于接收用户数据
class User(BaseModel):
    name: str

@app.post("/users/{user_id}")
def create_user(user_id: str, user: User):
    if user_id in fake_db:
        return {"error": "User with this ID already exists"}
    fake_db[user_id] = user.dict()
    return fake_db[user_id]

这段代码定义了一个POST路由/users/{user_id},用于创建新用户。user_id是路径参数,表示用户的唯一标识符。user是通过Pydantic模型User验证后的请求数据。

处理函数create_user首先检查user_id是否已经存在于fake_db中。如果已存在,返回一个错误消息。如果user_id不存在于fake_db中,它会将新用户数据存储到fake_db字典中,键为user_id,值是user对象转换为字典的结果。函数返回创建的用户的详细信息。

(5)PUT

PUT 请求用于更新现有资源的全部或部分内容。

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()

fake_db = {
    '1': {'name': 'Alice'},
    '2': {'name': 'Bob'}
}

class UserUpdateRequest(BaseModel):
    name: str

@app.put("/users/{user_id}")
def update_user(user_id: str, user_update: UserUpdateRequest):
    if user_id not in fake_db:
        raise HTTPException(status_code=404, detail="User not found")
    fake_db[user_id].update(user_update.dict())
    return fake_db[user_id]

函数update_user首先检查user_id是否存在于fake_db中。如果不存在,抛出一个404状态码的HTTPException,表示用户未找到。如果user_id存在于fake_db中,它会使用update方法更新该用户的名称。user_update.dict()将Pydantic模型转换为字典,以便可以更新模拟数据库中的用户信息。最后,函数返回更新后的用户信息。

(6)DELETE

DELETE 请求用于删除服务器上的资源。

from fastapi import FastAPI, HTTPException

app = FastAPI()

fake_db = {
    '1': {'name': 'Alice'},
    '2': {'name': 'Bob'}
}

@app.delete("/users/{user_id}")
def delete_user(user_id: str):
    if user_id not in fake_db:
        raise HTTPException(status_code=404, detail="User not found")
    del fake_db[user_id]
    return {"message": "User deleted successfully"}

函数delete_user首先检查user_id是否存在于fake_db中。如果不存在,抛出一个404状态码的HTTPException,表示用户未找到。如果user_id存在于fake_db中,使用del语句删除该用户信息。最后,函数返回一个包含成功消息的字典,表示用户已成功删除。

4. 项目总结

本项目简要介绍了FastAPI的入门。我先介绍了为什么要使用fastapi,它有许多的优点,然后我使用了简单的helloworld程序开始我们的fastapi之旅,最后使用一个用户信息库的CURD演示了FastAPI的常用操作。本人是初学者,有错误欢迎大佬们指出捏。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务