FastAPI(15)- 声明请求示例数据(上)

简介: FastAPI(15)- 声明请求示例数据(上)

前言


  • FastAPI 可以给 Pydantic Model 或者路径函数声明需要接收的请求示例,而且可以显示在 OpenAPI 文档上
  • 有几种方式,接下来会详细介绍

 

Pydantic 的 schema_extra


可以使用 Config cass 和 schema_extra 为 Pydantic Model 声明一个示例值

from typing import Optional
import uvicorn
from pydantic import BaseModel
from fastapi import FastAPI
app = FastAPI()
class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
    # 内部类,固定写法
    class Config:
        schema_extra = {
            "example": {
                "name": "Foo",
                "description": "A very nice Item",
                "price": 35.4,
                "tax": 3.2,
            }
        }
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
    results = {"item_id": item_id, "item": item}
    return results
if __name__ == "__main__":
    uvicorn.run(app="13_example:app", host="127.0.0.1", port=8080, reload=True, debug=True)


查看 Swagger API 文档

image.png

image.png


无论是 Example Value 还是 Schema 都会显示声明的示例值

 

Field 添加额外的参数


使用 Pydantic 的 Field() 时,可以将任何其他任意参数添加到函数参数中,来声明 JSON Schema 的额外信息

 

Field 的 extra 参数

image.png

默认 Field 是没有 example 参数的,而 **extra 就是关键字参数,表示可以添加其他任意参数,和常见的 **kwargs 是一个作用哦

关键字参数教程

Field 教程

 

添加额外的参数: example 参数

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: 小菠萝测试笔记
# blog:  https://www.cnblogs.com/poloyy/
# time: 2021/9/19 9:40 下午
# file: 12_model.py
"""
from typing import Optional
import uvicorn
from pydantic import BaseModel, Field
from fastapi import FastAPI
app = FastAPI()
class Item(BaseModel):
    # 给每个字段加上了 example 参数
    name: str = Field(..., example="小菠萝")
    description: Optional[str] = Field(None, example="描述")
    price: float = Field(..., example=1.11)
    tax: Optional[float] = Field(None, example=3.2)
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
    results = {"item_id": item_id, "item": item}
    return results


一定要命名为 example 吗?

  • 不一定,命名为其他也可以
  • 但是只有添加名为 example 的参数,Swagger API 上的 Example Value 才会显示这里传的参数值(示例值)

 

重点

  • 因为这里的 example 参数是额外添加的参数,所以不会进行数据验证
  • 比如字段类型声明为 str,example 参数传了数组也不会报错

 

查看 Swagger API 文档

image.png

image.png


它是针对每个字段设置的示例值,所以会显示在字段下

相关文章
|
5月前
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
266 1
|
5月前
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
333 1
|
5月前
|
API Python
Python FastAPI 获取 Neo4j 数据
Python FastAPI 获取 Neo4j 数据
51 0
|
8月前
|
JSON API 数据安全/隐私保护
如何使用Fastapi上传文件?先从请求体数据讲起
如何使用Fastapi上传文件?先从请求体数据讲起
239 2
FastAPI(54)- 详解 Request 请求对象(上)
FastAPI(54)- 详解 Request 请求对象(上)
630 0
|
8月前
|
IDE 测试技术 开发工具
FastAPI 并发请求解析:提高性能的重要特性
在当今的数字化世界中,网络用户对于高速响应和持续连接的诉求日益显著。这促使了基于 Python 构建的 FastAPI 框架受到广泛关注,它不仅现代化且效率极高,而且简化了并行请求的处理。本篇文章旨在探讨 FastAPI 如何处理这类请求,并对应用实例进行实际编码展示。
|
数据采集 JSON API
FastAPI – 一个现代高性能Python Web框架及其示例
FastAPI是一个用于构建API的现代、高性能Python web框架。它使用标准的Python类型提示来支持数据自动验证和API文档自动生成。该框架的一些优点包括速度快、易用性好、自动文档生成、类型注解、异步支持和验证功能。 FastAPI与其他Python框架的不同之处在于,它基于ASGI而非WSGI,支持异步代码。FastAPI还使用Python 3.6+的类型提示来声明参数、请求体、响应模型等,而其他框架需要额外的库或插件来实现数据验证和序列化。
407 0
|
存储 SQL 前端开发
FastAPI第三天---文件请求
FastAPI第三天---文件请求
225 0
FastAPI第三天---文件请求
|
前端开发 中间件 测试技术
FastApi的请求拦截
FastApi的请求拦截
908 0
|
存储 Python
FastAPI(54)- 详解 Request 请求对象(下)
FastAPI(54)- 详解 Request 请求对象(下)
587 0
FastAPI(54)- 详解 Request 请求对象(下)