python fastapi模块使用

FastAPI 是一个现代、快速(高性能)、基于标准 Python 类型提示的 Web 框架。它是一个用于构建 API 的异步框架,基于 Starlette 和 Pydantic 构建。以下是使用 FastAPI 的一些基本步骤:

  1. 安装 FastAPI 和 Uvicorn

    pip install fastapi uvicorn
  2. 创建一个 FastAPI 应用
    创建一个 Python 文件,比如 main.py,并添加以下内容:

    from fastapi import FastAPIapp = FastAPI()@app.get("/")
    def read_root():return {"Hello": "World"}
  3. 运行应用
    在终端中运行以下命令启动 FastAPI 应用:

    uvicorn main:app --reload
    # 指定ip port
    uvicorn main:app --reload --port 8000 --host 0.0.0.0

    这将启动一个开发服务器,并在 http://127.0.0.1:8000/ 上运行你的应用,当然可以使用 `python main.py` 这样的方式启动 FastAPI 应用。实际上,`uvicorn` 只是 FastAPI 推荐的 ASGI(Asynchronous Server Gateway Interface)服务器之一,但你也可以使用其他 ASGI 服务器,或者在需要时选择同步的服务器。

  4. 访问 API 文档
    FastAPI 自动生成交互式 API 文档,可以通过浏览器访问,地址是 http://127.0.0.1:8000/docs。

  5. 定义路径参数
    FastAPI 使用标准 Python 类型提示来定义路径参数。例如:

    @app.get("/items/{item_id}")
    def read_item(item_id: int, q: str = None):return {"item_id": item_id, "q": q}

    在上述例子中,item_id 是一个路径参数,而 q 是一个查询参数。

  6. 其他接口:

    # GET 请求
    @app.get("/")
    def read_root():return {"message": "Hello, World!"}# POST 请求
    @app.post("/items/")
    def create_item(item: dict):return {"item": item}# PUT 请求
    @app.put("/items/{item_id}")
    def update_item(item_id: int, item: dict):return {"item_id": item_id, "updated_item": item}# DELETE 请求
    @app.delete("/items/{item_id}")
    def delete_item(item_id: int):return {"message": f"Item {item_id} has been deleted"}
  7. 请求体和响应模型
    FastAPI 支持使用 Pydantic 模型来定义请求体和响应模型。例如:

    from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = None@app.post("/items/")
    def create_item(item: Item):return item

    上述例子中,Item 是一个 Pydantic 模型,用于验证请求体,而 create_item 函数接受一个 Item 对象作为参数。

这只是 FastAPI 的基础使用方式,它还有很多其他功能,如依赖注入、安全性、验证、WebSocket 支持等。你可以查阅 FastAPI 的官方文档以获取更多详细信息。

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

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

相关文章

c++没有返回值的返回值

上面的函数search没有返回值,因为a不等于1,但是输出的时候会输出6.这恰巧是x的值,如果我们希望a不等于1时返回x,那么这种结果反而是正确的.有时候这种错误的代码可能产生正确的结果反而会加大debug难度 int search(int n) { 00007FF66DB723E0 mov dword ptr [rsp8],e…

简易版扫雷+代码分析

前言: 实验一个简易版的扫雷,也要两百来行的代码,因此为了代码整洁,维护起来方便,这里我们和前期实现的三子棋一样,也弄一个游戏的头文件game.h用来装各种头文件以及函数的声明以及宏定义、预处理信息&…

视频文件+EasyDarwin做摄像机模拟器模拟RTSP流很方便,还能做成系统服务,方法与流程

之前我看到过一家人工智能做算法的企业,用EasyDarwinFFMPEG做了一个摄像机的模拟器,方法大概是: 用ffmpeg读取mp4等类型的视频文件(当然ffmpeg啥都能读取),再以RTSP协议的形式推送给EasyDarwin&#xff1b…

为IP地址申请SSL证书

SSL(Secure Sockets Layer)是一种网络协议,用于在浏览器与服务器之间建立安全、加密的连接。SSL证书是用于证明您的网站身份并启用HTTPS(超文本传输安全协议)的安全文件。这种协议可以确保用户与您的网站之间的所有通信…

统计学中两组数据如何进行差异性(相关性)分析?

变量说明: 在确定分析方法前,我们需要了解手中的数据类型,这是最基础也是有必要的,在所有的数据类型中,我们将数据类型分为分类变量也为定类变量和连续变量也称为定量变量,那么什么是定类变量?…

C语言--每日选择题--Day25

第一题 1. 对于C/C语言的函数,下列叙述中正确的是( ) A:函数的定义不能嵌套,但函数调用可以嵌套 B:函数的定义可以嵌套,但函数调用不能嵌套 C:函数的定义和调用都不能嵌套 D&#xf…

修改网卡PHY的灯-RK3568

文章目录 前言1.定制PHY的灯2.通过命令修改LED状态3.修改驱动效果前言 前面我们已经移植了网卡到开发板上面,也能够正常的进行通信,但是,我们会发现座子上面的灯并没有全部亮起来,而且这些灯的含义是什么,并没有讲解到,这里,就此问题,展开学习。 PHY 有一个重要的功能…

凝聚数字经济发展新力量,四象科技受邀出席2023全球数商大会

11月25日,2023全球数商大会在上海开幕。本届大会以“数联全球、商通未来”为主题,上海市委副书记、市长龚正出席大会并宣布大会开幕,国家发展改革委党组成员,国家数据局党组书记、局长刘烈宏,上海市副市长陈杰致辞。四…

奇异值分解SVD(Singular Value Decomposition)

一种理解方式,值得学习(分解时空矩阵) 先在这里阐述一下SVD的用途吧,具体细节稍后再做补充 1.通过SVD对数据的处理,我们可以使用小得多的数据集来表示原始数据集,这样做实际上是去除了噪声和冗余信息&…

为什么要选择数字人SaaS系统源码独立部署呢?

数字人SaaS(Software as a Service)系统是一种基于云计算模式提供的数字人服务,通过独立部署系统源码,企业可以获得更多的灵活性和控制权。 一、数字人SaaS系统源码独立部署的优势 1.定制化和个性化:通过独立部署数字…

【Mysql】【DB】【sql】提高数据库搜索性能的经验

【背景】 项目需要,经常给金融机构做数字化项目,涉及到各类复杂的查询,今天就我认为最重要的影响性能的数据库查询经验以及解决方案做一个分享。 【常见查询设计中最影响性能的方面】 最影响性能的是联表,且联表方面&#xff0…

SA与NSA网络架构的区别

SA与NSA网络架构的区别 1. 三大运营商网络制式:2. 5G组网方式及业务特性3. NSA-3系列4. NSA—4系列5. NSA-7系列6. 5G SA网络架构7. 运营商策略 1. 三大运营商网络制式: 联通:3G(WCDMA)\4G(FDD-LTE/TD-LTE)\5G(SA/NSA)移动:2G(GS…

【备忘录】快速回忆ElasticSearch的CRUD

导引——第一条ElasticSearch语句 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": "ik_smart" }概念 语法规则 HTTP_METHOD /index/_action/IDHTTP_METHOD 是 HTTP 请求的方法,常见的包括…

Rocket mq namesrv源码分析

NameServer 作为注册中心,提供路由注册、路由踢出、路由发现功能,舍弃强一致,保证高可用,集群中各个节点不会实时通讯,其中一个节点下线之后,会提供另外一个节点保证路由功能。 启动入口 org.apache.rock…

【带头学C++】----- 八、C++面向对象编程 ---- 8.5 struct结构体类型增强使用说明

目录 8.5 struct结构体类型增强使用说明 8.5.1 C结构体可以定义成员函数 8.5.2 c中定义结构体变量可以不加struct关键字 8.6 bool布尔类型关键字 8.5 struct结构体类型增强使用说明 第六章对结构体的使用、内存对齐以及数组、深拷贝和浅拷贝进行了一个详细的说明&#xff0c…

【数据结构实验】排序(二)希尔排序算法的详细介绍与性能分析

文章目录 1. 引言2. 希尔排序算法原理2.1 示例说明2.2 时间复杂性分析 3. 实验内容3.1 实验题目(一)输入要求(二)输出要求 3.2 算法实现3.3 代码解析3.4 实验结果 4. 实验结论 1. 引言 排序算法在计算机科学中扮演着至关重要的角色…

Leetcode211. 添加与搜索单词 - 数据结构设计

Every day a Leetcode 题目来源:211. 添加与搜索单词 - 数据结构设计 解法1:字典树 字典树(前缀树)是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。前缀树可以用 O(∣S∣) 的时间复杂度完成如下操作…

基于单片机温湿度光照自动窗帘系统设计

**单片机设计介绍, 基于单片机温湿度光照自动窗帘系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的温湿度光照自动窗帘系统是一种智能家居系统,通过使用单片机作为控制核心&#xff0c…

【IQR与MAD】原理,一文带你玩转箱型图含详细解释与代码

IQR方法 基于四分位数:使用数据的第一四分位数(25%)和第三四分位数(75%)来计算。 对称:相对于中位数对称地考虑上下界。 受极端值影响:如果数据中包含极端值,IQR可能会被拉得很大&a…

CMA认证是什么?CMA软件测试报告如何获取?

资格证书在各行各业都是一种专业性象征,如第三方检测机构的CMA认证,在相应的检测报告上加盖CMA章可获得国家以及行业认可,还是享受税收优惠的有力证明材料。 一、CMA认证是什么?   CMA是中国计量认证的简称,由省级以上人民政府…