FastAPI中的post,put的简单使用

我们在刚开始学习中,一般接触的就是@app.get("/"),尽管其简单易学。但在实际应用中就有缺陷,比如我想要输入的参数是一个待处理文本,这样可能会因为文本过长而无法输入等问题的出现,因此我也学习了一下POST,并写下这篇文章进行记录和分享学习过程。其中代码参考了官网,然后做一点自己的研究过程。

我们使用 Pydantic 模型来声明请求体,并能够获得它们所具有的所有能力和优点。

一、post()类

1、首先,你需要从 pydantic 中导入 BaseModel

2、然后,将你的数据模型声明为继承自 BaseModel 的类。使用标准的 Python 类型来声明所有属性:

from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel

class Car(BaseModel):
    name: str //必选参数
    weight: Optional[str] = None //可选参数
    price: float //必选参数
    length: Optional[float] = None //可选参数

app = FastAPI()
@app.post("/car/")
async def create_item(car: Car):
    return car

3、里面当然可以创建必须参数,可选参数,如果不了解可以看我第一次的文章:https://mp.csdn.net/mp_blog/creation/editor/124687834

 在终端打开

 得到结果

FastAPI中的post,put的简单使用_第1张图片

 跳转到

FastAPI中的post,put的简单使用_第2张图片

4、此时没发现有什么东西不要担心,加上/docs打开交互文档

 FastAPI中的post,put的简单使用_第3张图片

5、点击POST

可看见需要的参数类型,点击右侧的try it out,即可输入可自己要的参数

FastAPI中的post,put的简单使用_第4张图片 

 6、在Request body中输入自己的参数

FastAPI中的post,put的简单使用_第5张图片

 7、点击Execute,即可获得自己想要的Response

FastAPI中的post,put的简单使用_第6张图片

8、当然了,你也可以不输入可选参数

FastAPI中的post,put的简单使用_第7张图片

FastAPI中的post,put的简单使用_第8张图片 

 二、put()类

其实与get有点类似

from fastapi import FastAPI


app = FastAPI()


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

 通常是在完成请求体+路径参数中结合使用

from typing import Optional

from fastapi import FastAPI
from pydantic import BaseModel


class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None


app = FastAPI()


@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item):
    return {"item_id": item_id, **item.dict()}

在终端使用uvicorn main:app --reload运行后,打开交互文档,点击try it out 即可进行输入

127.0.0.1:8000/docs

FastAPI中的post,put的简单使用_第9张图片

 当然了也可以应用于请求体 + 路径参数 + 查询参数

from typing import Optional

from fastapi import FastAPI
from pydantic import BaseModel


class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None


app = FastAPI()


@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item, q: Optional[str] = None):
    result = {"item_id": item_id, **item.dict()}
    if q:
        result.update({"q": q})
    return result

即可获得

FastAPI中的post,put的简单使用_第10张图片

输入自己想要的

FastAPI中的post,put的简单使用_第11张图片 

得到结果

FastAPI中的post,put的简单使用_第12张图片

谢谢大家的浏览!!!有问题或者意见可以私信或者评论谢谢大家

你可能感兴趣的:(python)