FastAPI 是什么?小白必看

news2024/11/18 23:26:36

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建基于 Python 的 API。它是一个开源项目,基于 Starlette 和 Pydantic 库构建而成,提供了强大的功能和高效的性能。

FastAPI 官网地址:FastAPI

FastAPI 特点

FastAPI 的主要特点包括:

  1. 快速高效:FastAPI 基于异步编程模型(使用 Python 3.7+ 的 asyncawait 关键字),利用了 Python 的异步生态系统,提供出色的性能和吞吐量。
  2. 自动文档生成:FastAPI 可以自动为你的 API 生成交互式文档,支持自动检测请求参数和响应模型,并生成相应的 API 文档。
  3. 数据验证和转换:FastAPI 使用 Pydantic 库,提供了强大的数据验证和转换功能,能够自动处理请求和响应数据的验证、转换和序列化。
  4. 类型提示:FastAPI 基于 Python 的类型提示机制,提供了强类型的请求和响应处理,这样可以减少很多常见的错误,并提供更好的代码提示和可读性。
  5. 安全认证:FastAPI 支持常用的认证方式,如 OAuth2、JWT 等,并提供了对 HTTPS 的支持,可以保护你的 API 通信安全。
  6. 强大的生态系统:FastAPI 可以与众多 Python 生态系统中的工具和库无缝集成,如 SQLAlchemy、Databases、Redis 等。

如何使用 FastAPI?

下面的步骤将帮助你开始使用 FastAPI 构建一个简单的 Web 应用。

1、安装 FastAPI:在命令行中运行以下命令安装 fastapi,并安装 uvicorn

 
pip install fastapi

2、创建 FastAPI 应用:在你喜欢的 IDE 编辑器中创建一个新的 Python 文件,例如fastapi-demo.py。然后将以下代码复制到文件中:

 
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

上面的代码创建了一个名为 app 的 FastAPI 实例,并定义了一个根路由,返回一个简单的 JSON 响应。

3、运行 FastAPI 应用:在命令行中运行以下命令启动 FastAPI 应用:

 
uvicorn main:app --reload

FastAPI 将在本地启动一个服务器,并监听默认端口(8000)。你可以在浏览器中访问 http://127.0.0.1:8000,看到 {"Hello": "World"} 的响应。

4、添加更多的路由和功能:你可以继续在应用中添加更多的路由和功能,根据自己的需求进行扩展:

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

上面的代码添加了一个名为 read_item 的新路由,它接受一个 item_id 参数和一个可选的 q 参数,并返回一个 JSON 响应。

实践案例

以下是一个使用 FastAPI 构建的实践案例,能够在 IDE 编辑器中直接运行的代码。

 
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

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

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

复制以上代码到你的 IDE 编辑器中,并运行它。然后通过浏览器访问 http://localhost:8000/,你将看到 {"Hello": "World"} 的响应。同样地,你也可以访问 http://localhost:8000/items/42?q=somequery,查看带有参数的响应。

调试 FastAPI

我们可以通过 Apifox 来更方便的调试 FastAPI。

如果想快速的调试一条接口,新建一个项目后,在项目中选择 “调试模式” ,填写请求地址后即可快速发送请求,并获得响应结果,上文的实践案例如图所示:

总结

FastAPI 是一个高性能、易用且现代的 Python Web 框架,它通过使用最新的 Python 特性和异步编程,提供了快速开发 Web API 的能力。该框架不仅易于学习和使用,还具有自动生成文档、数据验证等强大功能。无论是构建小型项目还是大型应用程序,FastAPI 都是一个强大而有效的工具。

现在你已经了解了 FastAPI 的概念和使用方法,你可以访问官方网站并尝试使用 FastAPI 来构建自己的 Web 应用程序。

知识扩展

了解更多 FastAPI 相关使用技巧:

  • FastAPI 并发请求:提升性能的关键特性
  • FastAPI 与 Flask:Python Web 两大流行框架综合对比

参考链接:

  • FastAPI 官方文档

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

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

相关文章

Handler源码详解

Handler在Android开发中经常使用,我们从经常使用的sendMessage 看一下Handler的源码: 实际是调用了sendMessageDelayed,只不过delayMillis0了。 接着调用了 sendMessageAtTime函数 引出一个很重要的角色MessageQueue消息队列,enqueueMessag…

uniapp uview文件上传的文件不是文件流,该如何处理?用了uni.chooseImage预览功能要如何做

在使用uniapp开发,运用的ui是用uview,这边需要做一个身份认证,如下图 使用的是uview的u-upload组件,可是这个组件传给后端的不是文件流 后端接口需要的是文件流格式,后面使用了uniapp的选择图片或者拍照的api&#x…

Sentaurus TCAD 频繁跳出窗口

软件提示激活窗口,想要永久去掉这个窗口,需要进入root权限后复制下面的代码,然后回车运行 sed -i “s|enabled1|enabled0|g” /etc/yum/pluginconf.d/fastestmirror.conf mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Bas…

Redis主从复制、哨兵机制、集群分片

一.主从复制 1.概述 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave)。 数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主…

变透明的黑匣子:UCLA 开发可解释神经网络 SNN 预测山体滑坡

内容一览:由于涉及到多种时空变化因素,山体滑坡预测一直以来都非常困难。深度神经网络 (DNN) 可以提高预测准确性,但其本身并不具备可解释性。本文中,UCLA 研究人员引入了 SNN。SNN 具有完全可解释性、高准确性、高泛化能力和低模…

vue3 vant组件的引入方式

vue3中如何使用vant组件 创建项目及环境:vue3 ts vite 一、全局组件全部引用 注意:配置 unplugin-vue-components 插件后,将不允许以这种方式导入组件 1.安装vant 在项目目录下运行 npm i vant // Vue 3 项目,安装最新版 Va…

【雕爷学编程】Arduino动手做(180)---Seeeduino Lotus开发板3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

大数据学习教程:Linux 高级教程(上)

一、Linux用户与权限 1. 用户和权限的基本概念 1.1、基本概念 用户 是Linux系统工作中重要的一环, 用户管理包括 用户 与 组 管理 在Linux系统中, 不论是由本级或是远程登录系统, 每个系统都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限 对 文件 / 目录 的…

【Linux学习】日积月累——进程控制

一、进程创建 1.1 fork函数的认识 #include<unistd.h> pid_t fork(void); 返回值&#xff1a;自进程返回0&#xff0c;父进程返回子进程PID&#xff0c;出错返回-1进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a;分配新的内存块…

英语不好能学好Python吗?Python常用英文单词汇总

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 有些小可爱对英语好不好对学习python有没有什么影响有着很深的疑惑。 其实python学习&#xff0c;主要靠多敲多练&#xff0c;主打一个熟能生巧 那今天我就给大家带来Python常用英文单词汇总&#xff0c; 新手期小可…

关于领导要求logback日志时间格式要求为“年-月-日 时:分:秒,毫秒”

今天接到领导邮件要求整改系统输出日志规范&#xff0c;有一条要求调整输出日志时间格式为标题所述格式&#xff0c;例&#xff1a;2022-02-21 14:13:32,489 项目目前logback.xml里的配置是这样&#xff1a; <pattern>%d{yyyyMMdd hh:mm:ss} [%p][%c][%M][%L]-> %m%…

docker容器所有操作、创建私有仓库

目录 一、创建容器与运行容器 1、创建容器 2、启动容器&#xff08;后面加镜像:标签或者唯一ID都可以&#xff09; 3、容器的运行与终止 4、容器的进入 5、容器的导出与导入 6、容器的删除 7、文件复制 8、查看容器资源使用率 9、查看容器进程状态 10、更新容器配置 …

捷码低代码|5种常见的布局组件介绍!

在捷码中亲自体验&#xff0c;学习效果更好&#xff01;没有账号的&#xff0c;点击免费获得账号&#xff1a;http://dev.gemcoder.com/front/development/index.html#/login 本文会介绍五种布局组件&#xff0c;即流式布局、弹性布局、固定布局、多行多列布局、Layout布局。 一…

喜讯! WorkPlus入选中国信通院数字产品“2023全景图”!

“2023数字生态发展大会”暨中国信通院“铸基计划” WorkPlus喜讯 7月27日&#xff0c;中国信息通信研究院&#xff08;下称“中国信通院”&#xff09;主办的“2023数字生态发展大会”暨中国信通院“铸基计划”年中会议在京召开&#xff0c;大会全面地总结了“铸基计划”上半…

企业优化效率,进行数据在线管理是不二选择

如今商业环境的竞争是愈发激烈了起来&#xff0c;企业优化效率成为了提高竞争力和发展壮大的关键。数据与图文档管理是企业运营中不可或缺的一环&#xff0c;传统管理方式已不适应快速变化的市场需求和多样化的业务流程。而在线图文档管理结合BOM系统作为企业数字化管理的不二选…

无涯教程-Lua - repeat...until 语句函数

与 for 和 while 循环(它们在循环顶部测试循环条件)不同&#xff0c;Lua编程中的 repeat ... until 循环语言在循环的底部检查其条件。 repeat ... until 循环与while循环相似&#xff0c;不同之处在于&#xff0c;保证do ... while循环至少执行一次。 repeat...until loop - …

openGauss学习笔记-28 openGauss 高级数据管理-NULL值

文章目录 openGauss学习笔记-28 openGauss 高级数据管理-NULL值28.1 IS NOT NULL28.2 IS NULL openGauss学习笔记-28 openGauss 高级数据管理-NULL值 NULL值代表未知数据。无法比较NULL和0&#xff0c;因为它们是不等价的。 创建表时&#xff0c;可以指定列可以存放或者不能存…

AI绘画| 迪士尼风格|可爱头像【附Midjourney提示词】

Midjourney案例分享 图片预览 迪士尼风格&#xff5c;可爱头像 高清原图及关键词Prompt已经放在文末网盘&#xff0c;需要的自取 在数字艺术的新时代&#xff0c;人工智能绘画已经迅速崭露头角。作为最先进的技术之一&#xff0c;AI绘画结合了艺术和科学&#xff0c;开启了一…

WPF上位机6——文件操作、多线程

文件操作 文件夹操作 创建文件夹 磁盘信息 文件的读写 文件流 Thread多线程 带参数创建线程 Task多线程 创建方式1 第一种 第二种 第三种&#xff1a;线程池的方式 前台与后台线程

开源SCRM营销平台MarketGo-客户群裂变

一、概述 随着互联网社交的普及&#xff0c;企业通过社交渠道进行营销已经成为一种不可或缺的营销手段。在企微SCRM社交媒体营销模式中&#xff0c;基于留存用户做快速的拉取新客户的方式&#xff0c;叫裂变活动&#xff0c;下面我们就基于客户群裂变的概念、特点和方法做简单…