生活随笔
收集整理的這篇文章主要介紹了
fastapi PUT更新数据 / PATCH部分更新
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1. PUT 更新
- 2. 用 PATCH 進行部分更新
learn from
https://fastapi.tiangolo.com/zh/tutorial/body-updates/
1. PUT 更新
from typing
import List
, Optional
from fastapi
import FastAPI
from fastapi
.encoders
import jsonable_encoder
from pydantic
import BaseModelapp
= FastAPI
()class Item(BaseModel
):name
: Optional
[str] = Nonedescription
: Optional
[str] = Noneprice
: Optional
[float] = Nonetax
: float = 10.5tags
: List
[str] = []items
= {"foo": {"name": "Foo", "price": 50.2},"bar": {"name": "Bar", "description": "The bartenders", "price": 62, "tax": 20.2},"baz": {"name": "Baz", "description": None, "price": 50.2, "tax": 10.5, "tags": []},
}@app.get("/items/{item_id}", response_model
=Item
)
async def read_item(item_id
: str):return items
[item_id
]@app.put("/items/{item_id}")
async def update_item(item_id
: str, item
: Item
):update_item_encoded
= jsonable_encoder
(item
)items
[item_id
] = update_item_encoded
return jsonable_encoder
(items
)
2. 用 PATCH 進行部分更新
- 只發(fā)送 要更新的數(shù)據(jù),其余數(shù)據(jù)保持不變
- 可以在 Pydantic 模型的 .dict() 中使用 exclude_unset 參數(shù):排除沒有設(shè)置的參數(shù)(默認值的參數(shù))
- .copy() 為已有模型創(chuàng)建副本,調(diào)用 update 參數(shù)更新數(shù)據(jù)
from typing
import List
, Optional
from fastapi
import FastAPI
from fastapi
.encoders
import jsonable_encoder
from pydantic
import BaseModelapp
= FastAPI
()class Item(BaseModel
):name
: Optional
[str] = Nonedescription
: Optional
[str] = Noneprice
: Optional
[float] = Nonetax
: float = 10.5tags
: List
[str] = []items
= {"foo": {"name": "Foo", "price": 50.2},"bar": {"name": "Bar", "description": "The bartenders", "price": 62, "tax": 20.2},"baz": {"name": "Baz", "description": None, "price": 50.2, "tax": 10.5, "tags": []},
}@app.get("/items/{item_id}", response_model
=Item
)
async def read_item(item_id
: str):return items
[item_id
]@app.patch("/items/{item_id}", response_model
=Item
)
async def update_item(item_id
: str, item
: Item
):stored_item_data
= items
[item_id
] stored_item_model
= Item
(**stored_item_data
) update_data
= item
.dict(exclude_unset
=True) updated_item
= stored_item_model
.copy
(update
=update_data
)items
[item_id
] = jsonable_encoder
(updated_item
) return updated_item
總結(jié)
以上是生活随笔為你收集整理的fastapi PUT更新数据 / PATCH部分更新的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。