Python使用FastAPI开发CRUD接口完整案例

前言

学无止境,无止境学。大家好,我是张大鹏,之前在抖音有5万多粉丝,不过现在不拍视频,专心写公众号了。笔者目前是高级Python工程师,之前是全栈工程师,主要擅长Golang和Python开发,对于JavaVue,React也有一些研究。工作之余,喜欢学习和分享,希望能够通过此公众号”张大鹏520″,将自己学到的东西分享给大家,和大家一起交流,一起成长,一起进步。

今天要给大家分享的是<<Python使用FastAPI开发CRUD接口完整案例>>,这是一个非常基础但是功能比较完备的案例,包含一套CRUD接口.

效果预览

新增待办事项:

Python使用FastAPI开发CRUD接口完整案例


删除待办事项:

Python使用FastAPI开发CRUD接口完整案例


修改待办事项:

Python使用FastAPI开发CRUD接口完整案例


根据ID查询待办事项:

Python使用FastAPI开发CRUD接口完整案例


查询所有待办事项:

Python使用FastAPI开发CRUD接口完整案例


完整代码

以下是项目的完整代码,懒得复制的同学,可以在文章底部查看代码文件的获取方式哈.

from fastapi import FastAPI, APIRouter, Path
from pydantic import BaseModel

# 创建应用和路由
app = FastAPI()
todo_router = APIRouter()


# 创建模型
class TodoItem(BaseModel):
    item: str
    status: bool

    class Config:
        schema_extra = {
            "example": {
                "item""代办任务名称",
                "status"False
            }
        }


class Todo(BaseModel):
    id: int
    item: TodoItem


# 创建数据库
todo_list: list[Todo] = []


# 创建路由
@todo_router.post("/todo")
async def todo_add(todo: Todo) -> dict:
    todo_list.append(todo)
    return {
        "todo": todo
    }


@todo_router.get("/todo")
async def todo_get_list() -> dict:
    return {
        "data": todo_list
    }


@todo_router.get("/todo/{todo_id}")
async def todo_get_by_id(todo_id: int = Path(..., title="任务ID")) -> dict:
    # 查找并返回
    for tt in todo_list:
        if tt.id == todo_id:
            return {
                "data": tt
            }

    # 查不到,返回空
    return {
        "data"None
    }


@todo_router.put("/todo/{todo_id}")
async def todo_update(todo_id: int = Path(..., title="任务ID"), todo: Todo = None) -> dict:
    # 查找并替换
    for i in range(len(todo_list)):
        if todo_list[i].id == todo_id:
            todo_list[i] = todo
            return {
                "data": todo_list[i]
            }

    # 查找失败
    return {
        "data"None
    }


@todo_router.delete("/todo/{todo_id}")
async def todo_delete_by_id(todo_id: int = Path(..., title="任务ID")) -> dict:
    # 查找并删除
    for i in range(len(todo_list)):
        if todo_list[i].id == todo_id:
            return {
                "data": todo_list.pop(i)
            }

    # 删除失败
    return {
        "data"None
    }


# 挂载路由
app.include_router(todo_router)

# 启动应用
if __name__ == '__main__':
    import uvicorn

    uvicorn.run("main:app", host="127.0.0.1", port=8888, reload=True)

请求模型

# 创建模型
class TodoItem(BaseModel):
    item: str
    status: bool

    class Config:
        schema_extra = {
            "example": {
                "item""代办任务名称",
                "status"False
            }
        }


class Todo(BaseModel):
    id: int
    item: TodoItem

新增待办事项接口

@todo_router.post("/todo")
async def todo_add(todo: Todo) -> dict:
    todo_list.append(todo)
    return {
        "todo": todo
    }

删除待办事项接口

@todo_router.delete("/todo/{todo_id}")
async def todo_delete_by_id(todo_id: int = Path(..., title="任务ID")) -> dict:
    # 查找并删除
    for i in range(len(todo_list)):
        if todo_list[i].id == todo_id:
            return {
                "data": todo_list.pop(i)
            }

    # 删除失败
    return {
        "data"None
    }

更新待办事项接口

@todo_router.put("/todo/{todo_id}")
async def todo_update(todo_id: int = Path(..., title="任务ID"), todo: Todo = None) -> dict:
    # 查找并替换
    for i in range(len(todo_list)):
        if todo_list[i].id == todo_id:
            todo_list[i] = todo
            return {
                "data": todo_list[i]
            }

    # 查找失败
    return {
        "data"None
    }

根据ID查询待办事项接口

@todo_router.get("/todo/{todo_id}")
async def todo_get_by_id(todo_id: int = Path(..., title="任务ID")) -> dict:
    # 查找并返回
    for tt in todo_list:
        if tt.id == todo_id:
            return {
                "data": tt
            }

    # 查不到,返回空
    return {
        "data"None
    }

查询所有待办事项接口

@todo_router.get("/todo")
async def todo_get_list() -> dict:
    return {
        "data": todo_list
    }

结语

关注我不迷路,欢迎关注我的微信公众号”张大鹏520″,如果您对此文章感兴趣,欢迎点赞收藏,留言评论。

文中所有代码,只需要打赏3元,然后留言评论“已打赏”,即可获取哦。

写文章不容易,不喜勿喷哈,如果有想要学编程,学项目,或者在工作中有项目难以单独完成需要提供帮助的同学,欢迎私信我哈。生活不易,想要利用学到的编程知识,业余赚点零花钱。

谢谢您!!!


原文始发于微信公众号(张大鹏520):Python使用FastAPI开发CRUD接口完整案例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48636.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!