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文档

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

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

相关文章

《Python魔法大冒险》007 被困的精灵:数据类型的解救

小鱼和魔法师深入魔法森林,树木之间流淌着神秘的光芒,每一片叶子都似乎在低语着古老的咒语。不久,他们来到了一个小湖旁,湖中央有一个小岛,岛上困着一个透明的泡泡,里面有一个悲伤的精灵。 小鱼看着那个精…

软件行业25年技术发展史

语言时代 -> 框架时代 -> 分布式架构时代 -> 微服务架构时代 25年开发、管理,11年教培(教研总监)技术总结: 1997年 VB 1999年 ASPCOM 2004年 C# / JAVA、j2ee、ejb、struts1hibernate 2008年 旧三大框架 Struts2Spr…

MySQL 是如何实现事务的四大特性的?

分析&回答 如果你不知道事务更不知道四大特性请先看看:说说什么是事务 原子性 语句要么都执行,要么都不执行,是事务最核心的特性,事务本身来说就是以原子性来定义的,实现主要是基于undo log undo log&#xff…

探索ClickHouse——安装和测试

我们在Ubuntu 20 Server版虚拟机上对ClickHouse进行探索。 安装 检测环境 grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"SSE 4.2 supported 可以看到我们的环境支持编译版本的。如果不支持的环境…

MyBatisPlus之DQL编程控制

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 MyBatisPlus之DQL编程控制 一、 条件查询方式&…

zabbix安装部署

前期准备:安装mysql数据库和nginx 一、下载zabbix rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms yum install epel-release numactl yum install…

【LeetCode-面试经典150题-day21】

目录 120.三角形最小路径和 64.最小路径和 63.不同路径Ⅱ 5.最长回文子串 120.三角形最小路径和 题意: 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标…

JS 实现同时往数组多个位置插入值和删除值

1 start下标实现往固定地方插入数据 const aa [1, 2, 3, 4, 5, 6]; let bb [{ start: 5, list: [b1, b2, b3] },{ start: 0, list: [a1, a2] },{ start: 1, list: [c1, c2] },{ start: 1, list: [c11, c22] },{ start: 2, list: [d1, d2] },{ start: 3, deleteCount: 1 }, …

Python项目打包与部署(一):模块与包的概念与关系

当前各类Python教程鲜有涉及Python打包与部署技术,或者讲述过于表面化、片面化。 本人尝试从原理开始,结合实例,并给出标准操作步骤建议,为python编程爱好者提供一份较为详实的Python项目打包与部署参考教程。 本教程其它章节 Pyt…

SQL-存储过程、流程控制、游标

存储过程 存储过程概述 1.产生背景 开发过程总,经常会遇到重复使用某一功能的情况 2.解决办法 MySQL引人了存储过程(Stored Procedure)这一技术 3.存储过程 存储过程就是一条或多条SQL语句的集合存储过程可将一系列复杂操作封装成一个代码块,以便…

【【萌新的STM32的学习--非正点原子视频的中断设计思路】】

萌新的STM32学习–非正点原子视频的中断设计思路 我们分析而言 我们对于PA0 的设计就从此而来 对于边沿触发的选择我们已经有所了解了 我们下拉,但是当我们摁下开关的时候 从0到1 导通了 所以这个是下拉 上升沿触发 而对于KEY0 我们摁下是使得电路从原来悬空高阻态…

算法通关村第10关【黄金】| 归并排序

归并排序(Merge Sort)是一种常见的基于比较的排序算法,它的主要思想是分而治之(Divide and Conquer)。它的核心思想是将一个大的问题分解为小的子问题,解决子问题,然后将它们合并(me…

开启EMQX的SSL模式及SSL证书生成流程

生成证书 首先:需要安装Openssl 以下是openssl命令 生成CA证书 1.openssl genrsa -out rootCA.key 2048 2.openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -subj "/CCN/STShandong/Ljinan/Oyunding/OUplatform/CNrootCA" -out ro…

算法通关村-----数组实现加法专题问题解析

数组实现整数加法 问题描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。详见leetcode66 问题…

模型的保存加载、模型微调、GPU使用及Pytorch常见报错

序列化与反序列化 序列化就是说内存中的某一个对象保存到硬盘当中,以二进制序列的形式存储下来,这就是一个序列化的过程。 而反序列化,就是将硬盘中存储的二进制的数,反序列化到内存当中,得到一个相应的对象&#xff…

Java 中的 IO 和 NIO

Java 中的 IO 和 NIO Java IO 介绍Java NIO(New IO)介绍windows 安装 ffmpeg完整示例参考文献 Java IO 介绍 Java IO(Input/Output)流是用于处理输入和输出数据的机制。它提供了一种标准化的方式来读取和写入数据,可以…

理解 std::thread::join

C多线程并发编程入门(目录) 本文用最简单易懂的实际案例,讲清楚了 join 的实际内涵,保证你过目不忘。 Hello join 示例 join 函数是我们接触C多线程 thread 遇到的第一个函数。 比如: int main() {thread t(f);t.…

C++面试知识点总结

知识点总结 <<符号表示该语句将把这个字符串发送给cout&#xff1b;该符号指出了信息流动的路径&#xff1b;cout的对象属性包括一个插入运算符&#xff08;<<&#xff09;&#xff0c;它可以将其右侧的信息插入到流中&#xff0c;endl:重起一行。在输出流中插入en…

哈希的应用——位图

文章目录 前言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…