admin管理员组文章数量:1487745
FastAPI后台开发基础(7):常见字段类型
常见类型示例
示例代码
代码语言:python代码运行次数:0运行复制from __future__ import annotations
import random
import string
from datetime import date, datetime, time, timedelta
from typing import Annotated
from uuid import UUID
import uvicorn
from fastapi import Body, FastAPI
from pydantic import BaseModel, EmailStr, HttpUrl
app = FastAPI()
class MyDataTypes(BaseModel):
name: str = ''.join(random.choices(['Alice', 'Bob', 'Charil'], k = 1))
age: int = random.randint(18, 80)
price: float = random.randint(100, 1000) / random.randint(1, 100) / 1.0
is_active: bool = False
url: HttpUrl = HttpUrl('https:' + '//' + ''.join(random.choices(string.ascii_lowercase + string.digits, k = 16)) + '')
email: EmailStr = 'test@example'
unique_id: UUID = UUID('00000000-0000-0000-0000-000000000000')
start_datetime: datetime = datetime.now()
date_value: date = date.today()
process_after: timedelta = timedelta(days = random.randint(1, 10),
hours = random.randint(1, 24),
minutes = random.randint(1, 59),
seconds = random.randint(1, 59))
repeat_at: time = time(hour = random.randint(1, 23),
minute = random.randint(1, 59),
second = random.randint(1, 59))
@app.post("/async")
async def async_root(data: Annotated[MyDataTypes, Body(description = '常用的类型',
examples = [
MyDataTypes().model_dump()
])]):
print('unique_id:', data.unique_id)
print('start_datetime:', data.start_datetime)
print('date_value:', data.date_value)
print('process_after:', data.process_after)
print('repeat_at:', data.repeat_at)
return {"message": "Hello World", "data": data}
if __name__ == '__main__':
uvicorn.run(app, host = '127.0.0.1', port = 18081)
说明
在 FastAPI 中,使用 Pydantic 模型来定义和验证数据是一种常见的做法。
MyDataTypes
模型展示了如何在 FastAPI
中使用多种数据类型,包括一些基本类型和几种特殊的数据类型。
以下是对这个模型中每个字段的描述,特别强调了那些非通用或特殊的数据类型:
name
: 字符串类型 (str
),通过随机选择 'Alice', 'Bob', 'Charil' 中的一个来赋值。
age
: 整数类型 (int
),其值是 18 到 80 之间的随机整数。
price
: 浮点数类型 (float
),通过随机生成的方式计算得到,展示了如何使用随机数来生成浮点数。
is_active
: 布尔类型 (bool
),默认值为 False
。
url
: 特殊类型 HttpUrl
,这是 Pydantic
提供的一种类型,用于确保字段值是有效的 HTTP URL
。在这里,URL
是通过随机字符生成的。
email
: 特殊类型 EmailStr
,同样是 Pydantic
提供的类型,用于验证字符串是否为有效的电子邮件地址。默认值设置为 'test@example'
。
unique_id
: 特殊类型 UUID
,代表通用唯一标识符,这里使用了一个全零的示例 UUID
。
start_datetime
: datetime
类型,表示日期和时间,这里默认值为模型实例化的当前时间。
date_value
: date
类型,仅表示日期,这里默认值为模型实例化的当天日期。
process_after
: 特殊类型 timedelta
,表示时间间隔,这里通过随机数生成一个时间间隔,展示了如何表示从现在起一定时间后的时间点。
repeat_at
: time
类型,仅表示时间(不包括日期),这里的值是通过随机数生成的具体时间点。
这个模型不仅展示了如何在 FastAPI
中使用各种常见和特殊的数据类型,还通过默认值的设置展示了如何利用 Python
的标准库和 Pydantic
的功能来生成和验证复杂的数据结构。
这种模型定义在实际应用中非常有用,特别是在需要处理多种数据类型和确保数据有效性时。
生成文档
本文标签: FastAPI后台开发基础(7)常见字段类型
版权声明:本文标题:FastAPI后台开发基础(7):常见字段类型 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754878135a3180734.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论