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: strdescription: Optional[str] = Noneprice: floattax: Optional[float] = Noneclass 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

在这里插入图片描述
来看看文档:http://127.0.0.1:8000/docs#/default/update_item_items__item_id__put

在这里插入图片描述
其中: 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

在这里插入图片描述

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: strdescription: Optional[str] = Noneprice: floattax: 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, FastAPIapp = FastAPI()
@app.get("/items/")
async def read_items(ads_id: Optional[str] = Cookie(None)):return {"ads_id": ads_id} 

使用 postman 测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. Header 参数

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

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

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

  • 如果需要禁用 下划线到连字符 的自动转换,设置 Header 的参数 convert_underscores 为 False
  • 注意:一些 HTTP 代理和服务器不允许使用带有下划线的 headers
from typing import Optional
from fastapi import Cookie, FastAPI, Headerapp = FastAPI()
@app.get("/items/")
async def read_items(my_agent: Optional[str] = Header(None)):return {"my_agent": my_agent}    

在这里插入图片描述

  • 禁用下划线自动转换 strange_header: Optional[str] = Header(None, convert_underscores=False)
from typing import Optional
from fastapi import Cookie, FastAPI, Headerapp = FastAPI()
@app.get("/items/")
async def read_items(my_agent: Optional[str] = Header(None, convert_underscores=False)):return {"my_agent": my_agent} 

在这里插入图片描述

5.1 重复的 headers

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android(java)学习笔记171:服务(service)之绑定服务调用服务里面的方法

1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 ; bindService(intent, new MyConn(), BIND_AUT…

java 动态队列_RabbitMq之动态修改队列参数

RabbitMq不支持修改已经存在的队列和交换机参数,可以通过创建失败,捕获异常信息,然后删除原队列或交换机,然后重新创建,以达到修改参数的功能。package com.sky.study.delete;import java.io.IOException;import java.…

LeetCode 1909. 删除一个元素使数组严格递增

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums ,如果 恰好 删除 一个 元素后,数组 严格递增 ,那么请你返回 true ,否则返回 false 。 如果数组本身已经是严格递增的,请你也返回 true 。 数组…

mysql subindex_mssql server sql分页存储过程

set quoted_identifier ongoset ansi_nulls ongocreate proc execbypagesqlquery varchar(2000), --//输入参数:sql检索语句或表名pagesize int, --//输入参数:每页显示记录条数pageindex int --//输入参数:当前页码asset nocount onset ansi…

ATS push cache 测试

测试 ATS 注入缓存 参考了: http://serverfault.com/questions/471684/push-content-to-apache-traffic-servers-cache 得到返回:HTTP/1.0 400 Response Not Cachable 搜索得知,头部传入信息太少,必须包含反映时间的项。那个回答应…

fastapi 响应模型 / 响应状态码 / 表单参数

文章目录1. response_model2. 添加输出模型3. 响应模型编码参数4. response_model_include 和 response_model_exclude5. 代码复用:继承6. Union7. 任意 dict 的响应8. 响应状态码9. 表单参数learn from https://fastapi.tiangolo.com/zh/tutorial/response-model/ …

java对象内存模型_Java对象的内存模型

众所周知,函数调用在内存中是通过压栈,退栈实现的,而Java的方法调用则是在JVM栈中通过栈帧实现的,且所有的Java对象都只在堆上分配内存.那么一个Java对象在堆内存里到底长啥样呢?实际上,当一个对…

MySql学习之varchar类型

MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定),在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放…

fastapi 请求文件 / 表单 / 处理错误 / 路径操作配置 / jsonable_encoder

文章目录1. File 参数2. 多文件上传3. 请求表单与文件4. 处理错误5. 自定义响应头6. 自定义异常处理器7. 覆盖默认异常处理器8. 使用 RequestValidationError 的请求体9. 复用 FastAPI 异常处理器10. 路径操作参数配置10.1 status_code,tags10.2 summary&#xff0c…

java 静态类的实现_[Java教程]Javascript 静态类的实现

[Java教程]Javascript 静态类的实现0 2012-04-06 11:00:05早些天写过了类的实现,接着我们看看的静态类的实现。这东西在Javascript里用得会非常的频繁,因为针对现在的网页,多个基于同一个类对象的页面不多,往往不同块对象的交互就…

fastapi PUT更新数据 / PATCH部分更新

文章目录1. PUT 更新2. 用 PATCH 进行部分更新learn from https://fastapi.tiangolo.com/zh/tutorial/body-updates/1. PUT 更新 注意,put 没有指定的值,会被重置为默认值 from typing import List, Optionalfrom fastapi import FastAPI from fastap…

Chrome 扩展 最近的历史 HistoryBar v1.1

说明 以前用过一段时间傲游浏览器,渐渐的习惯了它的鼠标手势和一些细微的人性化的功能。比方地址栏左边的“近期訪问的页面”button。能够方便的找到近期 20 条历史记录。 但后来因为某些原因又回到了 Chrome 的怀抱,于是就没有了这些不起眼但非常好用的…

java整数划分递归_整数划分问题(递归法)

整数划分问题是算法中的一个经典命题之一&#xff0c;有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分&#xff0c;是指把一个正整数n写成如下形式&#xff1a;nm1m2...mi; (其中mi为正整数&#xff0c;并且1 < mi < n)&#xff0c;则{m1,m2,...,mi}为n的一…

数组移位

昨天今日头条笔试&#xff0c;发现好简单&#xff0c;一写出了几个问题&#xff0c;回来才想出来。 一个长度不超过10000的整数数组&#xff0c;里面有若干个0&#xff0c;请事先一段代码&#xff0c;将数组中值为0的元素移动到数组的最前面&#xff0c;其余元素相对位置保持不…

LeetCode 2047. 句子中的有效单词数

文章目录1. 题目2. 解题1. 题目 句子仅由小写字母&#xff08;a 到 z&#xff09;、数字&#xff08;0 到 9&#xff09;、连字符&#xff08;-&#xff09;、标点符号&#xff08;!、. 和 ,&#xff09;以及空格&#xff08; &#xff09;组成。 每个句子可以根据空格分解成 …

java技术学习内容_Java开发主要都学些什么内容?

展开全部Java开发培训班主要学32313133353236313431303231363533e58685e5aeb931333363386164习的课程大纲&#xff0c;你可以看下。第一阶段:JavaSE基础、MySQL数据库应用1.1 Java SE基本语法Eclipse开发环境类和对象封装、继承和多态Java数据结构(栈、队列、链表的实现)IO流技…

LeetCode 2048. 下一个更大的数值平衡数(枚举)

文章目录1. 题目2. 解题1. 题目 如果整数 x 满足&#xff1a;对于每个数位 d &#xff0c;这个数位 恰好 在 x 中出现 d 次。 那么整数 x 就是一个 数值平衡数 。 给你一个整数 n &#xff0c;请你返回 严格大于 n 的 最小数值平衡数 。 示例 1&#xff1a; 输入&#xff1a…

LeetCode Longest Common Prefix

原题链接在这里&#xff1a;https://leetcode.com/problems/longest-common-prefix/ 题目&#xff1a; Write a function to find the longest common prefix string amongst an array of strings. 题解&#xff1a; strs中的第一个字符串从i 0 开始&#xff0c;取char, 取出c…

java 主方法 this_java main 方法怎么创建

学校作业。。publicstaticvoidmain(String[]args){不知道加在哪里packagepersonproject;publicclassPerson{publicstaticintlastId0;privateStringname;privateStringgender;privateS...学校作业。。public static void main(String[] args) {不知道加在哪里package personproj…

输出国际象棋输出余弦曲线

输出国际象棋棋盘 1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 int main(){5 int i,j;6 SetConsoleOutputCP(437);//显示大于127的ASiic 码 7 for(i0;i<8;i){8 for(j0;j<8;j){9 if((ij)%20 ){…