zoukankan      html  css  js  c++  java
  • FastAPI 基础学习(十一) 复杂数据类型

    作者:麦克煎蛋   出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢!

    目前为止,我们主要用到了一些通用的数据类型,比如int、float、str、bool等。

    但我们也可以用一些相对复杂的数据类型,并且仍然可以得到以下的功能支持:

    • 编辑器支持
    • 数据格式自动转换
    • 数据格式自动校验
    • 自动生成注解和文档

    下面我们就看一下这些数据类型。

    1、UUID

    标准的通用唯一标识符(Universally Unique Identifier),一般在数据库或者系统中表示ID。

    在requests和responses中被认为是字符串类型

    2、datetime.datetime

    标准的Python datetime.datetime。

    在requests和responses中被认为是字符串类型,例如"2008-09-15T15:53:00+05:00"。

    3、datetime.date

    标准的Python datetime.date

    在requests和responses中被认为是字符串类型,例如"2008-09-15"。

    4、datetime.time

    标准的Python datetime.time

    在requests和responses中被认为是字符串类型,例如"14:23:55.003"。

    5、datetime.timedelta

    标准的Python datetime.timedelta

    在requests和responses中被认为是表示秒数的float类型,例如"2008-09-15"。

    6、frozenset

    在requests和responses中等同于set

    在requests中,列表数据会先进行去重,然后转换成set。

    在responses中,set会被转换成list。

    7、bytes

    标准的Python bytes

    在requests和responses中被认为是字符串类型

    8、Decimal

    标准的Python Decimal

    在requests和responses中被认为是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),
    ):
        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,
        }
  • 相关阅读:
    python_函数_文件
    Day_2_Python_str_list_dict的使用
    Day_1_Python_循环和格式化
    influxdb2.0版本部署+自启
    格式化Java内存工具JOL输出
    卷心菜的屯币日记
    influxDB时序数据库2.0FLUX查询语法使用记录
    两种转换2021-01-01T00:00:00Z为2021-01-01 00:00:00时间格式的方式(UTC时间转为yyyy-MM-dd HH:mm:ss)
    ThreadLocal的用处
    CentOS7使用ISO镜像文件作为离线Yum源
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/12928963.html
Copyright © 2011-2022 走看看