FastAPI 参数的作用
FastAPI是一个现代化的Python web框架,其参数具有重要的作用。在FastAPI中,参数被用于接收HTTP请求中的数据及其它相关信息。
FastAPI支持的参数类型包括:
查询参数(query parameters)
查询参数是指将参数附加到URL末尾以进行请求的一种技术。查询参数通常用于向Web服务器传递额外的信息,以便服务器可以根据查询参数返回相应的响应。例如,在Google搜索中,查询参数用于传递搜索关键字,而在电子商务网站中,查询参数用于传递商品ID和其他参数,以便显示特定的产品页面。查询参数由一个“?”字符开始,后跟一系列以“&”字符分隔的“名称=值”对,如以下示例所示:
https://www.example.com/search?q=apple&category=fruit&sort=price&order=desc
在此示例中,“q”表示搜索关键字,“category”表示商品类别,“sort”表示按价格排序,“order”表示降序排列。服务器可以解析查询参数,并根据这些参数提供定制的响应。
from fastapi import FastAPIapp = FastAPI()@app.get("/items/")
async def read_items(q: str = None):results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}if q:results.update({"q": q})return results
路径参数(path parameters)
路径参数是指在URL的路径中包含的参数,通常用于指定资源的特定属性或标识符。路径参数与查询参数(query parameters)不同,查询参数是会在问号后面提供的参数,例如`?name=John&age=30`。
例如,以下URL中的`:id`就是一个路径参数:
```
https://example.com/users/:id
```
这个URL表示一个RESTful API,用于查询用户信息。`:id`是路径参数,表示要查询的用户的唯一标识符。在实际使用时,`:id`将被替换为实际的用户ID。
使用路径参数可以使URL更加语义化,同时也可以简化API的设计和实现。在处理URL时,路径参数通常由Web框架或路由器自动解析。
from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: int):return {"item_id": item_id}
请求体参数(request body parameters)
请求体参数(request body parameters)是指在 HTTP 请求中通过请求体(request body)方式传递的参数。通过请求体参数,可以向服务器传递更加复杂、结构化的数据,比如 JSON 格式的数据、XML 格式的数据等。
对于一些请求,比如 GET 请求,请求参数通常是通过 URL 传递的,而不是通过请求体传递的。但是对于一些请求,比如 POST、PUT、PATCH 等请求,请求体常常用来传递数据(比如表单数据、文件数据等)。
请求体参数的格式通常由请求体的数据类型(Content-Type)来指定,比如 application/json、application/xml、multipart/form-data 等。在处理请求体参数时,服务器端的应用程序通常需要进行相应的解析和处理,以便正确地获取请求体参数中的数据。
from fastapi import FastAPI
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = None@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):results = {"item_id": item_id, "item": item}return results
请求头参数(header parameters)
请求头参数是包含在 HTTP 请求中的元数据,用于描述请求或响应的信息。请求头参数通常包括以下内容:
- User-Agent:指示发送请求的客户端类型和版本号。
- Accept:指定客户端需要接受的 MIME 类型。
- Authorization:用于验证客户端身份的凭证信息。
- Content-Type:指定请求或响应的 MIME 类型。
- Cookie:用于识别客户端的会话信息。
- Referer:指示请求的来源 URL。
- Host:指示被请求的服务器主机名。
- If-Modified-Since:用于缓存控制,指示客户端能够接受的最新修改时间。
请求头参数可以帮助服务器更好地处理请求,同时也可以提高通信的安全性和效率。
from fastapi import FastAPI, Headerapp = FastAPI()@app.get("/items/")
async def read_items(user_agent: str = Header(None)):return {"User-Agent": user_agent}
Cookie 参数(cookie parameters)
Cookie参数是指在设置(或更新)cookie时,可以使用的一些可选参数。这些参数可以用来定义cookie的属性,如过期时间、域、路径、安全标志等。
以下是一些常见的Cookie参数:
- name:cookie的名称
- value:cookie的值
- domain:cookie的域名,指定cookie可以被哪些域名访问
- path:cookie的路径,指定cookie可以被哪些URL路径访问
- expires:cookie的过期时间
- max-age:cookie的最大有效时间,单位为秒
- secure:指定cookie只能通过HTTPS协议传输
- httponly:指定cookie只能在HTTP请求中传输,不能通过JavaScript访问
使用这些参数,可以对cookie进行更加精细的控制,从而提高Web应用程序的安全性和可靠性。
总的来说,FastAPI的参数处理使得开发者可以快速地对请求数据进行解析和验证,从而更加轻松地编写高效的RESTful API。
参考:FastAPI文档
相关文章:
FastAPI 参数的作用
FastAPI是一个现代化的Python web框架,其参数具有重要的作用。在FastAPI中,参数被用于接收HTTP请求中的数据及其它相关信息。 FastAPI支持的参数类型包括: 查询参数(query parameters) 查询参数是指将参数附加到URL末…...

国内免费无限制的chatgpt导航和ai画画
非常实用的AI网址导航,其实际使用体验非常便捷。该导航系统不仅提供了全面的网站分类和搜索功能,还对每个网站进行了精准的评估和排序。推荐高质量的网站资源,并实时检测网站的安全性,保障用户的上网安全。 总的来说:…...

【USRP】集成化仪器系列2 :示波器,基于labview实现
USRP 示波器 1、设备IP地址:默认为192.168.10.2,请勿 修改,运行阶段无法修改。 2、中心频率:当需要生成不同频率单载波的 时候请直接修改中心频率,在运行的时候您 也可以直接修改中心频率。 3、接收增益:…...
Linux map type uncache 和 write combine区别
文章目录 前言一、定义二、隐含区别总结 前言 这段时间被Map Cache Type坑了一次。 GPU的PCI bar地址map成uncache 的还是 write combine? 一、定义 uncache(uc) : map后,CPU读写不经过Cache write combine(wb): map后,CPU读写同…...

【业务功能篇93】微服务-springcloud-多线程-异步处理-异步编排-CompletableFutrue-实战运用
异步处理编排 我们可以在商品详细信息查询的位置实现CompletableFuture的异步编排处理。 根据业务分析:3.4.5数据接口的入参信息需要来源于1数据接口的返回信息,也就是skuid 所以可以设计 1 3 4 5 串行线程 ,而 3 4 5依赖1 ,需要等…...

哈希的应用——位图
文章目录 前言1. 面试题思考2. 位图2.1 位图的概念2.2 思路讲解及代码实现结构定义构造函数set和reset接口实现set和reset测试观察test接口实现test接口测试思考 3. 位图的应用习题1习题2习题3 4. 总结5. 源码5.1 bitset.h5.2 Test.c 前言 前面的文章里我们学习了哈希表&#x…...

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆
2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆...

合并两个有序链表(每日一题)
“路虽远,行则将至” ❤️主页:小赛毛 ☕今日份刷题:合并两个有序链表 题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1: 输入:l1 …...
React Hooks总览
总览 hooks 功能分类具体 hooks具体功能React v18新特性跨端支持数据更新驱动useState定义要在页面中渲染的数据❌✔useReducer定义要在页面中渲染的数据,且这个数据有多种处理逻辑❌✔useSyncExternalStoreconcurrent 模式下,订阅外部 store 的行为&am…...

风向变了!智能汽车何以「降本」
随着软件定义汽车的概念逐步落地,以及底盘、动力、座舱、智驾、车身等不同域(分布式或者混合式)的功能更新迭代和融合,汽车行业正在意识到:底层硬件架构重构的迫切性。 事实上,早在2016年,作为传…...
后端面试话术集锦第 十五 篇:java线程面试话术
这是后端面试集锦第十五篇博文——java线程面试话术❗❗❗ 1. 创建线程的方式 首先呢,Thread类本质上是实现了Runnable接口,代表一个线程的实例。 所以,我们可以编写一个类,继承Thread类,或者直接实现Runnable接口。然后,再重写下~run方法就行了。启动线程的方式就是调…...

cocos creator配置终端调试
在launch.json里添加"preLaunchTask":“CocosCreator compile” 在cocos creator里选择开发者,visual studio code工作流,选择添加编译任务。 添加 settings.json {"files.exclude":{"**/.git": true,"**/.DS_Sto…...

达梦类型转换问题-float转换为varchar
表结构 CREATE TABLE "SYSDBA"."TABLE_2" ( "COLUMN_1" FLOAT, "COLUMN_2" NUMERIC(22,6)) STORAGE(ON "MAIN", CLUSTERBTR) ; 表数据: 查询,将numeric转换为float,再转换为varchar&…...

怎么用postman连接websocket
点击右侧栏的Collections,然后点击旁边的New,然后点击其中的WebSocket Request,然后输入Url,点击Connection,这里需要注意的是Url不能加上http://,因为这个不是http协议。...

需求分析入门
认识管理软件 什么是管理软件 管理软件就是用来辅助企业进行管理的软件,既包括对企业“人、财、物”相关的资产信息的管理,也包括对企业“供、产、销”相关的业务活动信息的管理。管理软件的重点在于管理信息的收集、流转,资源的共享、集成…...

攻防世界-php_rce
原题 解题思路 thinkPHP.0有漏洞,ThinkPHP5.x rec 漏洞分析与复现。本题就是利用漏洞查找。格式是: ?sindex/\think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]命令。 ls查看文件没什么东西,r…...

最小生成树Kruskal、Prim算法C++
什么是最小生成树 连通图: 在无向图中,若从顶点v1到顶点v2有路径,则称顶点v1和顶点v2是连通的。如果图中任意一对顶点都是连通的,则称此图为连通图。 生成树: 一个连通图的最小连通子图称作为图的生成树。有n个顶点的…...

系统架构设计师-计算机系统基础知识(2)
目录 一、存储管理 1、页式存储 2、段式存储 3、段页式存储 二、磁盘管理 1、先来先服务FCFS 2、最短寻道时间优先SSTF 三、文件系统 1、文件基本概念 2、文件的类型: 3、索引文件结构 4、位示图 四、性能指标 五、性能设计 1、阿姆达尔定律 六、性能评估 1、…...

二叉树的介绍
写在前面: 二叉树是数据结构课程中非常重要的内容,我们针对二叉树的概念、性质以及类型展开详细介绍。 一、概念 二叉树(Binary Tree)是n(n>0)个结点的有限集合,该集合或者空集࿰…...

数据结构与算法复杂度介绍
目录 一、基本概念 二、时间复杂度 【2.1】时间复杂度概念 【2.2】大O的渐进表示法 【2.3】举例时间复杂度计算 三、空间复杂度 一、基本概念 数据结构:相互之间存在一种或者多种特定关系的数据元素的集合。在逻辑上可以分为线性结构,散列结构、树…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...