美文网首页fastapi学习文档
fastapi教程翻译(十):Extra data types(

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

作者: warmsirius | 来源:发表于2019-10-15 16:35 被阅读0次

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

    • int
    • float
    • str
    • bool
      但是你也可以使用更复杂的数据类型。

    一、其他数据类型

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

    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,
        }
    

    相关文章

      网友评论

        本文标题:fastapi教程翻译(十):Extra data types(

        本文链接:https://www.haomeiwen.com/subject/uezcmctx.html