fastapi速成2

路径参数与查询参数:

python 复制代码
from fastapi import FastAPI,Path

import uvicorn

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World1"}
# 路径参数演示:
@app.get("/items/{item_id}")
async def read_item(item_id: int = Path(..., gt=0,lt=99,description="范围0-99")):
    return {"item_id": item_id, "message": f"这是 {item_id}"}

@app.get("/xmbl/{name}")
async def get_name(name: str=Path(...,min_length=1,max_length=10)):
    return {"msg":f"my name is {name}"}

#查询参数演示:
@app.get("/aaa/bbb")
async def get_name(skip: int,limit: int = 10):
    return {"skip":skip,"limit":limit}
if __name__ == "__main__":
    # 启动uvicorn服务器,绑定127.0.0.1:8000
    uvicorn.run("test5:app", host="127.0.0.1", port=8000)

Field注释:

python 复制代码
class Token(BaseModel):
    access_token: str = Field(..., description="access token", min_length=1, max_length=20)
    token_type: str
    expires_in: int = Field(..., description="expires time")


@app.post("/test")
async def test(token: Token):
    return token

HTML格式:

python 复制代码
@app.get("/hello", response_class=HTMLResponse)
async def hello_world():
    return "<h1>Hello World</h1>"

文件格式:

python 复制代码
@app.get("/get_file")
async def get_file():
    return FileResponse("./files/an.png")

自定义响应类型:

python 复制代码
class XMBL(BaseModel):
    id: int
    name: str
    type: str


@app.get("/xmbl/{id}", response_model=XMBL)
async def get_xmbl(id: int):
    return {
        "id": id,
        "name": f"第{id}小马的名字",
        "type": "类型"
    }

异常:

python 复制代码
@app.get('/xmbl2/{id}')
async def get_xmbl2(id: int):
    is_list = [1,2,3,4,5,6,7]
    if id not in is_list:
        raise HTTPException(status_code=404,detail="当前id不存在")
    return {
        "id": id
    }

总项目(fastapi项目,创建需要激活,也可以看前一篇文章,是手工创建项目的写法):

main.py

python 复制代码
from fastapi import FastAPI,HTTPException
from pydantic import BaseModel, Field
from fastapi.responses import HTMLResponse, FileResponse

app = FastAPI()


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


@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello123 {name}"}


class User(BaseModel):
    username: str
    password: str


@app.post("/register")
async def register(user: User):
    return user


class Token(BaseModel):
    access_token: str = Field(..., description="access token", min_length=1, max_length=20)
    token_type: str
    expires_in: int = Field(..., description="expires time")


@app.post("/test")
async def test(token: Token):
    return token


@app.get("/hello", response_class=HTMLResponse)
async def hello_world():
    return "<h1>Hello World</h1>"


@app.get("/get_file")
async def get_file():
    return FileResponse("./files/an.png")


class XMBL(BaseModel):
    id: int
    name: str
    type: str


@app.get("/xmbl/{id}", response_model=XMBL)
async def get_xmbl(id: int):
    return {
        "id": id,
        "name": f"第{id}小马的名字",
        "type": "类型"
    }

@app.get('/xmbl2/{id}')
async def get_xmbl2(id: int):
    is_list = [1,2,3,4,5,6,7]
    if id not in is_list:
        raise HTTPException(status_code=404,detail="当前id不存在")
    return {
        "id": id
    }

test_main.http

python 复制代码
# Test your FastAPI endpoints

GET http://127.0.0.1:8000/
Accept: application/json

###

GET http://127.0.0.1:8000/hello/User
Accept: application/json

###

依赖注入:

创建依赖项

导入depends

声明依赖项

python 复制代码
from fastapi import FastAPI,Query,Depends

import uvicorn

app = FastAPI()

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


async def common_parameters(
        skip: int = Query(0,ge=0),
        limit: int = Query(10,le=10),
):
    return {"skip": skip, "limit": limit}


@app.get("/ziyue/test")
async def get_ziyue_test(commons=Depends(common_parameters)):
    return commons

@app.get("/rourou/test")
async def get_rourou_test(commons=Depends(common_parameters)):
    return commons

if __name__ == "__main__":
    # 启动uvicorn服务器,绑定127.0.0.1:8000
    uvicorn.run("test8:app", host="127.0.0.1", port=8000)

ORM(对象关系映射):

pip install sqlalchemy[asyncio] aiomysql -i https://pypi.tuna.tsinghua.edu.cn/simple/

相关推荐
程序员Agions2 小时前
你的.env 文件,可能正在 GitHub 上裸奔
github
PD我是你的真爱粉2 小时前
FastAPI 参数接收类型总结
fastapi
灵活用工平台2 小时前
灵活用工平台注册流程图
python·流程图
2501_905967332 小时前
双目视觉:CREStereo论文超详细解读
人工智能·python·计算机视觉·双目视觉
狗狗学不会2 小时前
Pybind11 封装 RK3588 全流程服务:Python 写逻辑,C++ 跑并发,性能起飞!
c++·人工智能·python·目标检测
清水白石0082 小时前
深入理解 Python 字典的有序性:从 3.6 的“意外之喜”到 3.7 的官方承诺
开发语言·python
心枢AI研习社2 小时前
python学习笔记8--破茧与连接:Python HTTP 全球协作实战复盘
笔记·python·学习
写代码的【黑咖啡】2 小时前
Python 中的 Requests 库:轻松进行 HTTP 请求
开发语言·python·http
栗子叶2 小时前
Spring 中 Servlet 容器和 Python FastAPI 对比
python·spring·servlet·fastapi