fastapi 模式的额外信息,示例 / Cookie参数 / Header参数

简介: fastapi 模式的额外信息,示例 / Cookie参数 / Header参数

文章目录

1. Pydantic schema_extra

2. Field 的附加参数

3. Body 额外参数

4. Cookie 参数

5. Header 参数

5.1 重复的 headers

learn from https://fastapi.tiangolo.com/zh/tutorial/schema-extra-example/


添加一个将在文档中显示的 example


1. Pydantic schema_extra

from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
    class Config:
        schema_extra = {
            "example": {
                "name": "michael",
                "description": "a learner",
                "price": 100.0, 
                "tax": 0.1
            }
        }
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
    res = {"item_id": item_id, "item": item}
    return res

image.pngimage.png

其中: class Config:

schema_extra = {

example”: {

加黑的字符,大小写必须完全一致,应该是内置的字段,否则无法显示例子


2. Field 的附加参数


  • Field(None, example=xxx)
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
    name: str = Field(..., example="michael")
    description: Optional[str] = Field(None, example="handsome")
    price: float = Field(..., example=34.5)
    tax: Optional[float] = Field(None, example=0.1)
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
    res = {"item_id": item_id, "item": item}
    return res

image.png


3. Body 额外参数


可以通过传递额外信息给 Field 同样的方式操作Path, Query, Body

from typing import Optional
from fastapi import FastAPI, Body
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
@app.put("/items/{item_id}")
async def update_item(
    item_id: int, 
    item: Item = Body(
        ...,
        example = {  # 加入 example 参数
            "name": "michael",
            "description": "a learner",
            "price": 100.1, 
            "tax": 0.1
        }
    )
):
    res = {"item_id": item_id, "item": item}
    return res


4. Cookie 参数


声明 Cookie 参数的结构与声明 Query 参数和 Path 参数时相同。

第一个值是参数的默认值,同时也可以传递所有验证参数或注释参数,来校验参数

你需要使用 Cookie 来声明 cookie 参数,否则 参数将会被解释为 查询参数

from typing import Optional
from fastapi import Cookie, FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(ads_id: Optional[str] = Cookie(None)):
    return {"ads_id": ads_id} 

使用 postman 测试

image.pngimage.pngimage.png


5. Header 参数


大多数标准的 headers 用 "连字符" 分隔,也称为 "减号" (-)。


但是像 user-agent 这样的变量在Python中是无效的。


因此, 默认情况下, Header 将把参数名称的字符从下划线 (_) 转换为连字符 (-) 来提取并记录 headers


如果需要禁用 下划线到连字符 的自动转换,设置 Header 的参数 convert_underscores 为 False

注意:一些 HTTP 代理和服务器不允许使用带有下划线的 headers

from typing import Optional
from fastapi import Cookie, FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(my_agent: Optional[str] = Header(None)):
    return {"my_agent": my_agent}    

image.png

from typing import Optional
from fastapi import Cookie, FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(my_agent: Optional[str] = Header(None, convert_underscores=False)):
    return {"my_agent": my_agent} 

image.png


5.1 重复的 headers


可以通过一个Python list 的形式获得 重复header 的 所有值

from typing import Optional, List
from fastapi import Cookie, FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(x_token: Optional[List[str]] = Header(None)):
    return {"x_token value:": x_token} 

image.png

相关文章
|
22天前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
4月前
|
安全 搜索推荐 JavaScript
和Cookie相关的Header 字段有哪些?
和Cookie相关的Header 字段有哪些?
|
9月前
|
数据采集 JSON JavaScript
全面拥抱FastApi —三大参数及验证
全面拥抱FastApi —三大参数及验证
|
4月前
|
JSON 前端开发 Java
什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂
什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂
|
11月前
|
存储 缓存 JSON
36.从入门到精通:CGI环境变量 GET和POST方法 GET方法 POST方法 CGI中使用Cookie Cookie设置 检索Cookie信息
36.从入门到精通:CGI环境变量 GET和POST方法 GET方法 POST方法 CGI中使用Cookie Cookie设置 检索Cookie信息
|
12月前
|
网络安全 Windows
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
|
存储 PHP
PHP为什么需要设置session_set_cookie_params()函数来配置session的cookie参数?
PHP为什么需要设置session_set_cookie_params()函数来配置session的cookie参数?
103 0
|
JSON Java 数据格式
浏览器Header和cookie字符串形式转Json
浏览器Header和cookie字符串形式转Json
111 0
浏览器Header和cookie字符串形式转Json
|
NoSQL Redis
SpringSession的源码解析(从Cookie中读取Sessionid,根据sessionid查询信息全流程分析)
上一篇我们介绍了SpringSession中Session的保存过程,今天我们接着来看看Session的读取过程。相对保存过程,读取过程相对比较简单。 本文想从源码的角度,详细介绍一下Session的读取过程。
275 0
SpringSession的源码解析(从Cookie中读取Sessionid,根据sessionid查询信息全流程分析)
|
安全 搜索推荐 JavaScript
和Cookie相关的Header 字段有哪些?
大家好,我是阿萨。HTTP相关内容我们学习了Header的字段。常见header 字段解释。今天我们学习下Cookie相关字段。
108 0
和Cookie相关的Header 字段有哪些?