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,
        }
  • 相关阅读:
    vue双向数据绑定原理解析及js代码实现
    react 实现tab切换
    vue不是内部或外部命令,解决办法
    JavaScript 基础知识 表达式和运算符
    JavaScript 基础知识 变量与数据类型
    Animation动画-小动画
    Ajax的封装
    esp32 python上位机(命令行)
    ESP32扫描环境中的所有WiFi并且通过串口选择需要连接的WiFi
    Linux修改开机图形/etc/motd
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/12928963.html
Copyright © 2011-2022 走看看