fastapi学习文档

fastapi教程翻译(十):Extra data types(

2019-10-15  本文已影响0人  warmsirius

直到现在,你已经使用了常见的下面的这几种数据类型:

一、其他数据类型

下面是一些你可以使用的额外的数据类型:

1. UUID:

  • 一个标准的“通用唯一标识符”,在许多数据库和系统中通常作为ID使用。
  • 在请求和响应中将以str表示。

2. datetime.datetime:

  • Python的日期时间类型: datetime.datetime.
  • 在请求和响应中,将以ISO 8601格式的str表示, 比如: 2008-09-15T15:53:00+05:00.

3. datetime.date:

  • python的日期类型: datetime.date.
  • 在请求和响应中,将以ISO 8601格式的str表示, 比如: 2008-09-15.

4. datetime.time:

  • Python的时间类型: datetime.time.
  • 在请求和响应中,将以ISO 8601格式的str表示, 比如: 14:23:55.003.

5. datetime.timedelta:

  • Python的时间增量类型: datetime.timedelta.
  • 在请求和响应中,将以float表示总秒数.
  • Pydantic还允许将其表示为“ ISO 8601时间差异编码”, 点击查看更多.

6. frozenset:

  • 在请求和响应中, 格式与 set相同:
    • 在请求中,将读取列表,消除重复,并将其转换为“集合”.
    • 在响应中,set将会被转化为list.
    • 生成的schema中将制定set中的值是唯一的 (using JSON Schema's uniqueItems).

7. bytes:

  • Python标准类型: bytes.
  • 在请求和响应中将被视为str
  • 生成的Schema将指定它是带有binary“格式”的str

8. Decimal:

  • Python标准类型: Decimal.
  • 在请求和响应中,将以float格式.

二、举例

下面是一些使用上面的数据类型的一些路径操作函数的例子:

from datetime import datetime, time, timedelta 
from uuid import UUID 
from fastapi import Body, FastAPI

app = FastAPI()

@app.put("/items/{item_id}")
async def read_items(
    item_id: UUID,
    start_datetime: datetime = Body(None),
    end_datetime: datetime = Body(None),
    repeat_at: time = Body(None),
    process_after: timedelta = Body(None)
):
   pass

注意:函数内部的参数具有其自然数据类型

例如,您可以执行常规的日期操作,例如:

from datetime import datetime, time, timedelta
from uuid import UUID

from fastapi import Body, FastAPI

app = FastAPI()

@app.put("/items/{item_id}")
async def read_items(
    item_id: UUID,
    start_datetime: datetime = Body(None),
    end_datetime: datetime = Body(None),
    repeat_at: time = Body(None),
    process_after: timedelta = Body(None),
):
    start_process = start_datetime + process_after
    duration = end_datetime - start_process

    return {
        "item_id": item_id,
        "start_datetime": start_datetime,
        "end_datetime": end_datetime,
        "repeat_at": repeat_at,
        "process_after": process_after,
        "start_process": start_process,
        "duration": duration,
    }
上一篇下一篇

猜你喜欢

热点阅读