【FastAPI】—— 01 创建FastAPI项目

news2024/12/23 10:31:50

在这里插入图片描述

1.FastAPI框架介绍

  FastAPI是⼀个现代、快速(⾼性能)的Web框架,⽤于构建API。是建⽴在Starlette和Pydantic基础上的。它基于Python3.7+的类型提示(typehints)和异步编程(asyncio)能⼒,使得代码易于编写、阅读和维护。FastAPI具有⾃动交互式⽂档(基于OpenAPI规范和JSONSchema)、数据验证、依赖注⼊(DependencyInjection)等功能,这些功能使得API的开发速度更快、更可靠。FastAPI还⽀持WebSocket,可以轻松地扩展到更复杂的应⽤场景。
在这里插入图片描述


2.为什么要⽤FastAPI

(1)强⼤的性能
  FastAPI使⽤Pydantic和Starlette等现代Python库,可以实现⽐Flask和Django等传统框架更快的性能。FastAPI的异步⽀持使其能够处理⼤量并发请求,并在⾼负载下保持稳定的性能。

(2)自动生成API⽂档
  FastAPI可以⾃动⽣成API⽂档,这是⼀个重要的优势。FastAPI使⽤OpenAPI标准,可以通过SwaggerUI或Redoc⾃动⽣成交互式API⽂档。这使得API的使⽤和测试更加容易和直观。

(3)类型提示和自动验证
  FastAPI使⽤Python的类型注解和Pydantic库来⾃动验证请求和响应的数据。这使得代码更加清晰和易于维护,并可以在运⾏时⾃动检查数据类型和格式。这也可以帮助开发⼈员更早地发现和解决错误。

(4)快速开发
  FastAPI提供了⼀些快速开发的功能,如⾃动路由和依赖注⼊。这使得开发⼈员可以更快地编写API,并且可以更容易地管理和维护代码。FastAPI还提供了⼀些常⻅的功能,如⾝份验证和数据库集成,以便开发⼈员可以更快地构建功能完整的API。

(5)强⼤的交互式API⽂档
  FastAPI的交互式API⽂档不仅可以⾃动⽣成,⽽且还⾮常强⼤。开发⼈员可以在⽂档中执⾏请求和测试,以便更好地理解API的使⽤和⾏为。⽂档还提供了⼀些有⽤的⼯具,如请求和响应模型的可视化和⾃动代码⽣成。这使得API的使⽤和测试更加容易和直观。


3.第一个FastAPI程序

3.1 Python虚拟环境搭建

(1)安装Python解释器
官网下载:https://www.python.org/downloads/

(2)安装虚拟环境库
在cmd中输⼊:

pip install virtualenv

3.创建虚拟环境
在cmd中切换到需要创建虚拟环境的⽬录下,执⾏:

virtualenv env_name

4.激活虚拟环境
在cmd中进⼊到第三步创建的env_name/Scripts⽬录下,执⾏:

activate

  执⾏成功后,在cmd中,当前输⼊⾏前⾯会有(env_name)的前缀在当前状态下,使⽤pip就是在虚拟环境中安装第三⽅库了。

5.退出虚拟环境

deactivate

6.查看虚拟环境

workon

7.进入虚拟环境

workon 虚拟环境名称

8.删除虚拟环境rmvirtualenv

rmvirtualenv 虚拟环境名称
3.2 安装FastAPI

(1)安装所有的可选依赖及对应功能,包括了 uvicorn ,可以将其⽤作运⾏代码的服务器。

pip install fastapi[all] -ihttps://mirrors.aliyun.com/pypi/simple/

(2)也可以分开来安装
假如想将应⽤程序部署到⽣产环境,可能要执⾏以下操作:

pip install fastapi

并且安装 uvicorn 来作为服务器:

pip install "uvicorn[standard]"
3.3 创建项⽬

选择虚拟环境下的Python解释器创建fastApi项目
在这里插入图片描述

创建好的项目包含一个main.py文件
在这里插入图片描述

main.py

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}


@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}
3.4 启动项目

(1)通过pycharm启动按钮(开发模式)
在这里插入图片描述

浏览器输入:127.0.0.1:8000
在这里插入图片描述

(2)uvicorn命令启动(⽣产模式)
uvicorn main:app --reload命令含义如下:
• main : main.py ⽂件(⼀个Python「模块」)。
• app :在 main.py ⽂件中通过 app = FastAPI() 创建的对象。
• --reload :让服务器在更新代码后重新启动。仅在开发时使⽤该选项。

(3)在main.py中定义main函数

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app, host='127.0.0.1', port=8000)
3.5 访问接口文档

http://127.0.0.1:8000/docs
在这里插入图片描述


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

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

相关文章

软件设计原则之开闭原则

开闭原则(Open-Closed Principle, OCP)是软件设计中的一个重要原则,由伯特兰梅耶(Bertrand Meyer)在1988年提出。该原则强调软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭…

【机器学习】 7. 梯度下降法,随机梯度下降法SGD,Mini-batch SGD

梯度下降法,随机梯度下降法SGD,Mini-batch SGD 梯度下降法凸函数(convex)和非凸函数梯度更新方向选择步长的选择 随机梯度下降SGD(Stochastic Gradient Descent)梯度下降法:SGD: Mini-batch SGD 梯度下降法 从一个随机点开始决定下降方向(重要&#xff…

关于kafka的分区和消费者之间的关系

消费者和消费者组 当生产者向 Topic 写入消息的速度超过了消费者(consumer)的处理速度,导致大量的消息在 Kafka 中淤积,此时需要对消费者进行横向伸缩,用多个消费者从同一个主题读取消息,对消息进行分流。 …

【JVM】OOM与调优(二)

OOM与调优 6.JVM工具如jps 该命令是纯Java编写的 -q:只显示Java进程的ID -m:输出Java进程的ID main函数所在类的名字 传递给main函数的参数 -l:输出Java进程的IDmain函数所在类的全限定名(包名类名) -v:输出Java进程的IDmain函数所在类的名称传递给JVM的参数 应用&am…

在野漏洞的应急响应流程

许多时候,对于负责安全工作又不太擅长安全漏洞技术的人员而言,如何应对突发漏洞是工作中主要的难点,这里的突发漏洞指的是两类:一类是通过新闻、咨询推送,被社会舆论所有关注的CVE漏洞,比如前段时间所谓的核…

【YOLOv10改进[Conv]】感受野注意力卷积RFAConv(2024.3)| 使用RFAConv 改进v10目标检测效果 + 含全部代码和详细修改方式

本文将进行在YOLOv10中使用RFAConv,助力YOLOv10目标检测效果,文中含全部代码、详细修改方式。助您轻松理解改进的方法。

手撕M.2 的B-KEY M-KEY、M+B KEY定义

SSD 尺寸与规格 我们在买ssd的时候,商家都会说什么ssd是2280还是2242规格的,这里的规格实际上就是代表的ssd的尺寸大小 M.2模组的尺寸目前有11种,用Type xxyy的方式表示,xx表示宽度,yy表示长度,单位为毫米。例如上面提…

(mcu) 嵌入式基础简单入门(程序架构分析)

文章目录 💽前言💽软件框架📀工具环境📀模板工程📀编译后📀Code📀典例举例 💽Keil 使用notes⭐END🌟关注我 💽前言 本文为一份简单入门笔记,以 st…

算法-单词规律(290)

leetcode题目链接 这道题用哈希表来解决 一个哈希表存放从单词到字符的映射,一个存放从字符到单词的映射,依照空格分隔字符,并将每个字符存放到vector字符数组, 遍历 pattern,对于每个字符 c 和对应的单词 w&#xf…

带你快速了解WEB应用服务器TOMCAT

目录 一、WEB技术 1.1 HTTP协议和B/S 结构 1.2 前端三大核心技术 1.2.1 HTML 1.2.2 CSS(Cascading Style Sheets)层叠样式表 1.2.3 JavaScript 二 WEB框架 2.1 web资源和访问 2.2 后台应用架构 2.2.1 单体架构 2.2.2 微服务 2.2.3 单体架构和…

机器学习 第6章 支持向量机

这里写目录标题 6.1 间隔与支持向量6.2 对偶问题6.3 核函数6.4 软间隔与正则化6.5 支持向量回归 6.1 间隔与支持向量 给定训练样本集 D { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 1 , 1 } D\left \{ (x_{1},y_{1}),(x_{2},y_{2}) ,...,(x_{…

禹晶、肖创柏、廖庆敏《数字图像处理》Otsu方法描述勘误

最大化类间距离准则与最小错误率准则不等价。 虚线处为最大类间距离,前景与背景直方图的交界处为最小错分概率,当部分前景错分为背景或者部分背景错分为前景时,一般会导致类间距离变小。所以两者接近,但不相等。 禹晶、肖创柏、…

《Spring Boot 集成 Swagger:打造高效接口文档与开发体验》

Swagger 一.导语: ​ 相信无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。其实无论是前端调用后端,还是后…

MindSearch 部署

任务 按照教程,将 MindSearch 部署到 HuggingFace 并美化 Gradio 的界面,并提供截图和 Hugging Face 的Space的链接。 创建开发机 & 环境配置 mkdir -p /root/mindsearch cd /root/mindsearch git clone https://github.com/InternLM/MindSearch.…

dbsyncer同步mysql数据

1 概述 DBSyncer(代码地址:https://github.com/86dbs/dbsyncer)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务&#…

人脸质量评价:深入解析和实现

人脸质量评价:深入解析和实现 引言 随着人工智能和计算机视觉技术的飞速发展,人脸识别已成为许多领域的关键技术之一。然而,人脸识别的准确性高度依赖于输入的人脸图像质量。因此,人脸质量评价作为人脸识别前的预处理步骤&#…

如何利用电商 API 数据分析助力精准选品!

电商 API 数据分析在选品过程中起着至关重要的作用,它们之间有着密切的关系: 一、提供市场趋势洞察 热门商品识别: 通过分析电商 API 中的销售数据,包括商品的销售量、销售额、销售频率等指标,可以快速准确地识别出当…

清华计算几何-线段求交与BO算法

单轴线段求交 给定单边轴下, N定线段,检查出相交的线段. 解法一: 暴力求解 遍历所有线段对,进行相交判断, 算法复杂度为O(n2) 解法二: LR扫描 把每条线段的头尾认定为L和R。对所有点进行排序,如果每两个点满足LL或者RR,则对应…

Leetcode JAVA刷刷站(97)交错字符串

一、题目概述 二、思路方向 为了验证字符串 s3 是否由 s1 和 s2 交错组成,我们可以使用动态规划(Dynamic Programming, DP)的方法来解决这个问题。 首先,我们需要定义状态 dp[i][j],它表示 s1 的前 i 个字符和 s2 的前…

DocuSign集成方案 | 结合 DocuSign 与 Oracle,加快业务完成速度!

DocuSign for Oracle 集成将 DocuSign 的电子签名功能与 Oracle 的项目生命周期管理 (PLM) 解决方案相结合 DocuSign 和 Oracle 是两家全球领先的技术公司,它们都致力于帮助企业简化和自动化流程。DocuSign 是电子签名领域的领导者,其解决方案可帮助企业…