Python web:Fastapi快速入门
1. 项目目标
(1)了解fastapi优点
(2)熟悉创建fastapi程序流程
(3)了解fastapi常用CURD操作
2. 项目准备
2.1. 基础准备
系统镜像:Win 11
fastapi官网:FastAPI
环境准备:
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常用操作
(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的常用操作。本人是初学者,有错误欢迎大佬们指出捏。
作者:颗粒CloudCoder